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 3.23.58] Comparaison de l'annee d'une DATE dans un WHERE


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut [MySQL 3.23.58] Comparaison de l'annee d'une DATE dans un WHERE
    Salut tlm,

    J'ai un ptit probleme avec une requete mais je vois pas comment on peut faire pour le resoudre.
    Je veux comparer l'annee et le mois d'une date dans un WHERE mais le serveur me retourne naturellement " Unknown column 'January' in 'where clause' "

    Voici la requete:
    SELECT O.Dish_Name, COUNT(O.Dish_Name) FROM Order_Item O, Dish D, Customer_Order C WHERE O.Dish_Name = D.Dish_Name AND O.Order_Num = C.Order_Num AND YEAR(C.date) = "2006" AND MONTH(C.date) = "January" GROUP BY O.Dish_Name;
    Lol, y a un probleme avec les balise CODE?! Ca me fais ca quand je met ma requete entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT O.Dish_Name, COUNT(O.Dish_Name) FROM Order_Item O, Dish D, Customer_Order C WHERE O.Dish_Name = D.Dish_Name AND O.Order_Num = C.Order_Num AND YEAR(C.date) = "2006" AND MONTH(C.date) = "January" GROUP BY O.Dish_Name;
    Et la partie qui pose probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YEAR(C.date) = "2006" AND MONTH(C.date) = "January"

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    et si tu met le numéro du mois plutot?
    quel sgbd?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    En fait je recupere le mois en lettre et je le met dans la requete. Je pensais qu'avec la fonction MONTH j'aurais pas besoin de convertir en chiffre.
    Ici j'ai mis le mois en dur pour simplifier la lecture mais normalement y a du PHP integre.

    Sinon le sgbd c'est MySQL v3.23.58

  4. #4
    Membre confirmé Avatar de neuropathie
    Inscrit en
    Janvier 2005
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 223
    Par défaut
    ce que je peux te recommander c'est d'externaliser la partie comparaison des dates dans une fonction, et c'est cette fonction que tu vas appeler dans ta procédure stockée, c'était ma seule solution quand j'avais eu ce genre de problème

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Oulaa, ca m'a l'air bien complique?!
    Mais bon, si c'est la seule solution (ou plutot la plus simple), vais me renseigner sur la syntaxe pour creer des procedures stockees

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Par défaut
    es-tu bien sûr que la fonction MONTH retourne une String?

    Je ne suis pas certaine parce que je suis habituée à travailler avec oracle, mais habituellement ça retourne le numéro du mois donc pour janvier, il faut mettre 01 comme valeur

  7. #7
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Tu confonds les fonctions month et monthname.

    Voici un lien vers les Fonctions de dates et d'heures de la documentation officielle
    • Citation Envoyé par La doc Mysql
    • MONTH(date)
      Retourne le numéro du mois de la date date, dans un intervalle de 1 à 12 :
      mysql> SELECT MONTH('1998-02-03');
      -> 2
    • MONTHNAME(date)
      Retourne le nom du mois de la date date :
      mysql> SELECT MONTHNAME("1998-02-05");
      -> 'February'
Alexandre Tranchant
Chef de projet AMO pour le Cerema.
Retrouvez mes articles sur PHP et Symfony

+ Répondre à la discussion
Cette discussion est résolue.
ActualitésFAQs SGBDTutoriels SGBDSQLOutils SGBDLivres SGBD et SQL

Discussions similaires

  1. insertion d'une date dans une table mysql
    Par hunter99 dans le forum SGBD
    Réponses: 6
    Dernier message: 14/12/2007, 23h17
  2. Mise à jour d'une date dans MySQL
    Par champijulie dans le forum JDBC
    Réponses: 6
    Dernier message: 07/02/2007, 17h02
  3. [RegEx] Insérer une date dans MYSQL
    Par pony99 dans le forum Langage
    Réponses: 7
    Dernier message: 14/11/2006, 18h51
  4. [Débutant]comment recuperer l année d'une date
    Par megapacman dans le forum Access
    Réponses: 4
    Dernier message: 05/05/2006, 14h58
  5. Réponses: 6
    Dernier message: 18/04/2006, 13h11

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