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

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 88
    Points
    88
    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 : 41
    Localisation : France

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

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

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

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 88
    Points
    88
    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 actif Avatar de neuropathie
    Inscrit en
    Janvier 2005
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 223
    Points : 201
    Points
    201
    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 régulier
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 88
    Points
    88
    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 régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    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 : 47
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    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

  • #8
    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 : 47
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Le même lien pour les version 3.23 4.0 et 4.1 :
    http://dev.mysql.com/doc/refman/4.1/...functions.html

    Aucune différence entre les versions pour ces deux fonctions.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  • #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 88
    Points
    88
    Par défaut
    Merci !!!

    En fait y avait 2 erreurs: la fonction qui etait en fait MONTHNAME() et j'avais oublie de mettre le mois que je recupere entre quote.


    Maintenant ca marche nikel

  • #10
    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 : 47
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Dans ce cas merci de cliquer sur le bouton résolu en bas de page. Ceci évitera aux autres collaborateurs de lire tout ce message et de découvrir à la fin que tout est réglé et que cela a été une pure perte de temps pour eux...
    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