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 :

SQL et les dates


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par défaut SQL et les dates
    Bonjour,

    j’essaie d’afficher une liste d’articles publiés dans le mois dernier. Comment écrire la requête ??

    la requête "fausse" que j'ai écrite est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE MONTH(created) = MONTH(NOW()) - 1
    Merci d'avance.

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Par défaut
    Si "created" est bien de type date, que le format est bon (pas de problème d'inversion des jours et mois), je ne vois pas le soucis...
    Par exemple sous SQL Server (à adapter pour vous, MySql j'imagine)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with t_tmp(id, maDate) as 
    (select 1, '10/01/2012' union
     select 2, '05/05/2011')
    select *
    from t_tmp
    where MONTH(maDate)=MONTH(getdate()) - 1
    renvoie bien 1, 10/01/2012.

  3. #3
    Membre habitué
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par défaut
    le problème se pose en fait si le mois courant est Janvier
    alors MONTH(NOW()) - 1 = 0
    et normalement ça devrait être 12...
    merci pour votre aide

  4. #4
    Membre expérimenté
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Par défaut
    Exact. Dans ce cas il suffit de rajouter une petite condition dans le where... Je vous laisse trouver .

  5. #5
    Membre habitué
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par défaut
    merci KookieMonster;
    voilà j'ai trouvé la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM matable WHERE DATE_FORMAT(created, '%Y-%m') = 
     DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 MONTH),  '%Y-%m')
    et ça marche !

  6. #6
    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 : 48
    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
    Effectivement votre solution va fonctionner, mais elle n'est pas optimale.
    Elle nécessite que votre SGBD formate toute la colonne created avant de pouvoir la filtrer.
    Si sur des faibles volumes ce n'est pas perceptible, plus vous aurez de données et plus ce sera long.

    Quand ce sera suffisamment long vous envisagerez alors la création d'un index, mais ce dernier ne sera pas utilisé pour cette requête puisque vous appliquez une fonction à cette colonne.

    Il vaut mieux appliquer les fonctions de conversions sur vos constantes sans toucher à votre colonne.

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

Discussions similaires

  1. Requette SQL sur les dates
    Par willfox dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/02/2008, 18h04
  2. [SQL] encore les dates
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/12/2007, 15h54
  3. [SQL] Convertir les dates us en fr
    Par shllolo dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/09/2007, 15h12
  4. probleme sql pour les date
    Par kroma23 dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/05/2007, 16h58
  5. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 18h26

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