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

SQL Procédural MySQL Discussion :

[DATE] Gestion de calendrier et extraction de date


Sujet :

SQL Procédural MySQL

  1. #1
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut [DATE] Gestion de calendrier et extraction de date
    Bonjour,

    Je vous avoue que je suis un peu perdu coté gestion des dates dans les requètes MySQL.....

    Je souhaiterais faire deux choses, extraire des anniverssaires et des évenements.

    J'ai une table Users dans laquelle est stockée la date anniversaire des membres et je souhaiterais extraire l'identifiant, le nom et le prénom des membres dont c'est l'anniverssaire.
    anniv est un champ DATE.

    Ce qui me donnerais quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id, lastname, firstname FROM users WHERE anniv = NOW()
    Mais là je suis perdu parce que NOW() me ramene la date du jour...

    Autre problème, j'ai un table Evenements ou sont stockés des évenements à venir et j'aimerais les afficher dans une page calendrier. Je souhaiterais extraire l'identifiant et le nom de l'évènement.
    Mais ici le champ dateday est un TIMESTAMP

    Ce qui me donnerais quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id, name FROM evenements WHERE dateday = NOW()
    Mais là je suis encore perdu...

    Est ce que quelqu'un pourrait me montrer la voie svp ?

    Merci d'avance
    @+
    cadou

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    pour le 1er, utilise DAY et MONTH. pour l'autre, prends CURDATE au lieu de NOW.

  3. #3
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    c'est à dire ?
    Un truc de ce style ?
    (je ne suis pas chez moi donc je ne peux pas tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id, lastname, firstname FROM users WHERE DAY(anniv) = DAY(NOW()) AND MONTH(anniv) = MONTH(anniv)
    Et pour le second

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id, name FROM evenements WHERE dateday = CURDATE()
    Merci d'avance pour tes eclaircissements

    @+
    cadou

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    C'est exactement ça !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Bonjour,

    perso je n'arrive pas à faire fonctionner cette requête. Elle m'affiche une erreur de limite 1-30 pour les jours.
    SELECT id, lastname, firstname FROM users WHERE DAY(anniv) = DAY(NOW()) AND MONTH(anniv) = MONTH(anniv)
    Toutefois si j'éxécute la recherche que sur les mois, donc:
    SELECT Nom, Prenom FROM collaborateurs WHERE MONTH(DateAnni) = MONTH(NOW())
    Eh bien ça tourne...
    Comment faire pour que ça aille aussi avec les jours ?

    Merci pour votre aide.

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Citation Envoyé par skippy86
    perso je n'arrive pas à faire fonctionner cette requête. Elle m'affiche une erreur de limite 1-30 pour les jours.
    euh... quel est le message d'erreur exact ???
    Citation Envoyé par skippy86
    Toutefois si j'éxécute la recherche que sur les mois, donc:
    Eh bien ça tourne...
    Dans le premier cas, tu utilises anniv, tandis que dans le second tu prends DateAnni. Est-ce que ce ne serait pas plutôt ça le truc ? anniv est-elle vraiment une colonne de type DATE ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Salut Antoun,

    avant tout je tiens à te remercier pour ton aide.
    En fait le message d'erreur m'indique seulement les limites.. 1-30. Donc je penses avoir une erreur sur les jours mais je ne comprends pas pourquoi.

    Mon champ se nomme "DateAnni" et "anniv" était la requête citée plus haut dans les post.

    Mon erreur est la suivante:
    Erreur

    requête SQL :

    SELECT Nom, Prenom FROM collaborateurs WHERE DAY(DateAnni) = DAY(NOW()) AND MONTH(DateAnni) = MONTH(NOW()) LIMIT 0, 30

    MySQL a répondu:

    Something is wrong in your syntax près de '(DateAnni) = DAY(NOW()) AND MONTH(DateAnni) = MONTH(NOW()) LIMIT' à la ligne 1
    Bizarre non, pourtant je compare bien le champ "DateAnni" à la valeur "NOW()" ....

    Merci pour ton aide.
    a+

  8. #8
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 29
    Par défaut
    Salut Antoun,

    avant tout je tiens à te remercier pour ton aide.
    En fait le message d'erreur m'indique seulement les limites.. 1-30. Donc je penses avoir une erreur sur les jours mais je ne comprends pas pourquoi.

    Mon champ se nomme "DateAnni" et "anniv" était la requête citée plus haut dans les post.

    Mon erreur est la suivante:
    Erreur

    requête SQL :

    SELECT Nom, Prenom FROM collaborateurs WHERE DAY(DateAnni) = DAY(NOW()) AND MONTH(DateAnni) = MONTH(NOW()) LIMIT 0, 30

    MySQL a répondu:

    Something is wrong in your syntax près de '(DateAnni) = DAY(NOW()) AND MONTH(DateAnni) = MONTH(NOW()) LIMIT' à la ligne 1
    Bizarre non, pourtant je compare bien le champ "DateAnni" à la valeur "NOW()" ....

    Merci pour ton aide.
    a+
    En fait, elle est comment ta base de données, c'est la même qu'au premier post ?
    Tu pourrais mettre les tables complètes qui nous interessent pour ton problème ? Je n'arrive pas à voir ton problème sans voir le format de la base...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    En fait, elle est comment ta base de données, c'est la même qu'au premier post ?
    Tu pourrais mettre les tables complètes qui nous interessent pour ton problème ? Je n'arrive pas à voir ton problème sans voir le format de la base...
    Hep,

    ben je ne suis pas chez moi donc je peux t'énumérer mes champs mais je ne peux faire un print-screen.
    Les infos sont les suivantes:
    Table: collaborateurs
    Champs:
    - NoCollaborateur
    - Nom
    - Prenom
    - Rue
    - IDLocalite
    - NoMobile
    - DateAnni (champ au format DATE)

    Pis j'aimerais donc sortir tous les collaborateurs dont la date d'anniversaire est = NOW()
    Je voudrais afficher un truc du genre pour que les gens sur l'intranet voient qui a son anniversaire:
    SELECT Nom, Prenom FROM collaborateurs WHERE .....
    Merci pour votre aide.

  10. #10
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Bonjour,

    Quelle est la version de MySQL ? Il y a une limitation sur la version.

    Référence

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    je suis en MYSQL version 1.6

    je ne sais toujours pas comment attaquer ce problème...
    merci d'avance

  12. #12
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    essaie DAYOFMONTH à la place de DAY

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    arf je viens fou je n'arrive toujours pas à faire cette requête...
    Je viens de me faire quelques recherches sur google et je crois vraiment être maudit...
    Impossible de trouver la bonne formule.

    Je vais aller me coucher peut-être trouverais-je une solution pendant mon sommeil.
    Si vous aussi, tenez-moi au courant.

    @+

  14. #14
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    tu as vraiment une version 1.6 ??? tu ne confonds pas avec la version de phpMyAdmin ?

    que te donnent chacune des requêtes suivantes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT VERSION() ;
    SELECT DAYOFMONTH(NOW()) ;
    SELECT CURDATE() ;
    SELECT SUBSTRING('abc', 2, 1) ;
    SELECT SUBSTRING(NOW(), 6, 2) ;

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Bonsoir Antoun,

    désolé du retard, mais étant aux études (économie) et que j'ai les examens semestriels cette semaine je n'ai pas eu le temps de te répondre avant.

    J'ai bien essaillé les fonctions SELECT que tu m'as données..
    voici les resultats
    VERSION()
    3.23.49-max-nt

    DAYOFMONTH(NOW())
    16

    CURDATE()
    2007-01-16

    SUBSTRING('abc', 2, 1)
    b


    SUBSTRING(NOW(), 6, 2)
    01
    Je ne comprends pas le dernier Substring personellement

    Merci pour ton aide.
    a+

  16. #16
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Donc, tu es en MySQL 3.23 (je suppose que 1.6 doit être ta version de phpMyAdmin ou de EasyPHP).

    Tu ne peux donc pas utiliser DAY(), qui n'a été ajouté qu'en version 4.1.1, comme indiqué par Adjanakis. La bonne nouvelle c'est que DAY() n'est qu'un alias de DAYOFMONTH(), qui fonctionne chez toi.

    Cela te donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Nom, Prenom 
    FROM collaborateurs 
    WHERE DAYOFMONTH(DateAnni) = DAYOFMONTH(NOW()) 
      AND MONTH(DateAnni) = MONTH(NOW())
    Comme ce qui t'intéresse c'est la date seule et non l'heure, tu peux aussi utiliser CURDATE() à la place de NOW(), ce sera microscopiquement plus rapide.

    Quant à mon second SUBSTRING, il extrait les 6ème et 7ème caractères d'une date au format '2007-01-16'. C'était une roue de secours au cas où DAYOFMONTH() n'aurait pas fonctionné dans ta version.

  17. #17
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    ???

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Bonsoir à tous,

    je tenais à vous remercier c'est bon ça fonctionne.

    @Antoun
    Merci tu avais raison c'était un problème de version MySQL....
    A présent, tout fonctionne

    Meilleures salutations

Discussions similaires

  1. Sélection d'une date dans un calendrier
    Par navis84 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 17/04/2012, 17h12
  2. [Dates] Gestion d'un calendrier avec les jours fériés
    Par maximenet dans le forum Langage
    Réponses: 4
    Dernier message: 05/05/2006, 08h41
  3. [Dates] mettre un calendrier dans une pagephp
    Par Tr@nkill dans le forum Langage
    Réponses: 12
    Dernier message: 07/04/2006, 14h19
  4. [VBA-E] choisir une date dans un calendrier
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/03/2006, 09h05
  5. [Dates] gestion de date
    Par rom950 dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 18h05

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