IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Mysql: Recupérer les jours d'un mois entier


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut Mysql: Recupérer les jours d'un mois entier
    Bonjour à tous et à toutes,

    Dans une précédente discussion j'avais demandé d'obtenir les jours d'une semaine. La solution était:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    SELECT DATE(D.dte)
    FROM (
    	SELECT '2011-03-01' AS dte UNION ALL
    	SELECT DATE_ADD('2011-03-01', INTERVAL 1 DAY) UNION ALL
    	SELECT DATE_ADD('2011-03-01', INTERVAL 2 DAY) UNION ALL
    	SELECT DATE_ADD('2011-03-01', INTERVAL 3 DAY) UNION ALL
    	SELECT DATE_ADD('2011-03-01', INTERVAL 4 DAY) UNION ALL
    	SELECT DATE_ADD('2011-03-01', INTERVAL 5 DAY) UNION ALL
    	SELECT DATE_ADD('2011-03-01', INTERVAL 6 DAY) 
    ) D
    WHERE D.dte <= '2011-03-07'
    Cependant, maintenant j'aurai besoin de récupérer les jours d'un mois entier, tout en prenant en compte bien sure qu'il peut y a voir 30, 31, 28 jours dans un mois!

    Vous comprenez bien que je ne peux pas créer cette requête en me basant sur la précédente

    Auriez vous une idée ?


    Merci d'avance,

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par David55 Voir le message
    Dans une précédente discussion j'avais demandé d'obtenir les jours d'une semaine. La solution était...
    Vous avez la mémoire courte.
    La solution était de créer et remplir une table de calendrier, chose que vous vouliez éviter.
    La rustine (ou solution de contournement) était ce que vous avez posté.

    Même problème => même solution.

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Je suis bien d'accord que la solution est la même cependant comment faire pour gérer le nombre de jour d'un mois car ici je savais qu'il me fallait 7 jours mais maintenant, il me faut 31, 30 ou 28 jours.

    Sinon je peux contourner le problème en créant ma requête via java comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    "		SELECT '" + params["DateDeb"].value + "' AS dte UNION ALL\n";
     
    for (i = 1; i <= 31; i++)
    {
    	queryText = queryText + "SELECT DATE_ADD('" + params["DateDeb"].value + "', INTERVAL " + i + " DAY)";
    	if (i != 31)
    		queryText = queryText + " UNION ALL";
    	queryText = queryText + "\n";
    }
     
    queryText = queryText + "	) D, \n" +

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    On vous a déjà donné la réponse... C'est fatiguant de toujours dire la même chose !

    A =
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Ah oui j'ai compris j'ai du mal formuler ma question désolé.

    Je voulais le faire sans date de fin ce qui veut dire que je n'ai pas la dernière ligne de la requête!

    Dans ce cas ma question est comment connaitre la date de fin d'un mois à partir de la date de début.

    Exemple:
    DateDeb: 2011-02-01
    Date de fin = 2011-02-28

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    La date de fin d'un mois, c'est la date de début du mois suivant moins un jour !

    Ceci fonctionne sous MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(CONCAT(EXTRACT(YEAR FROM CURRENT_DATE), '-', EXTRACT(MONTH FROM CURRENT_DATE), '-01') AS DATE) + INTERVAL 1 MONTH - INTERVAL 1 DAY AS dernier_jour_du_mois
    Normalement, l'opérateur de concaténation des chaînes de caractères est || mais ce nul de MySQL ne le connaît pas !

    Évidemment, il faut remplacer aussi CURRENT_DATE par la date que à partir de laquelle tu souhaites le dernier jour du mois.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tous les jours depuis x mois
    Par wwluigi dans le forum SQL
    Réponses: 3
    Dernier message: 10/07/2008, 13h35
  2. inserer les jours d un mois
    Par lido dans le forum SQL
    Réponses: 2
    Dernier message: 16/10/2006, 20h18
  3. afficher les jours d'un mois
    Par lido dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/03/2006, 23h38
  4. les jours dans un moi et annee
    Par aliwassem dans le forum Langage
    Réponses: 15
    Dernier message: 10/10/2005, 07h37
  5. Remplissage table avec les jours d'un mois
    Par tomtom25 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/05/2005, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo