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

Requêtes MySQL Discussion :

récupération de données suivant une date


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut récupération de données suivant une date
    Bonjour,

    J'ai toujours mon problème de requête de sélection suivant la date.

    Tous les jours, je lance un script qui trie tous les participants, donc le champs
    "FLAG" est à "N" et teste si la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.


    Vérification de la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ID_RANDONNEUR, NOM_PRENOM,EMAIL, LE 
    FROM RANDONNEUR 
    WHERE LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY) 
    AND FLAG ='N'
    Le problème, c'est que la requête ne me sélectionne pas les bons participants

    Les dates sélectionnées par la requête du 2010-12-14 devraient être vides, alors qu'elle me sélectionne des dates en avance
    randonneur : 216 - BONNEAU Stéphanie - xxx@xxx.fr - 2010-12-10
    randonneur : 214 - GENDRE Celine - xxx@xxx.com - 2010-11-19
    randonneur : 215 - LYCURGUE Ludivine - xxx@xxx.fr - 2010-11-16
    Merci du coup de pouce

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DATE_ADD( CURDATE( ) , INTERVAL -30
    DAY )
    retourne ce matin
    2010-11-14
    résultat auquel 2010-12-10, 2010-11-19 et 2010-11-16 me semblent effectivement supérieurs

  3. #3
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    merci pour ta reponse

    donc la requet devrais se presenter comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT ID_RANDONNEUR, NOM_PRENOM,EMAIL, LE, DATE_ADD( CURDATE( ) , INTERVAL -30
    FROM RANDONNEUR 
    WHERE FLAG ='N'
    est ce bon ??

    a+ gilles

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Avec ta requête, tu vas avoir tous les randonneurs dont le FLAG est à 'N'.

    Si tu ne veux que ceux dont la colonne LE date de moins d'un mois, il faut ajouter la condition dans le WHERE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ID_RANDONNEUR, NOM_PRENOM, EMAIL, LE
    FROM RANDONNEUR 
    WHERE FLAG ='N'
        AND LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY)

  5. #5
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    merci cinefil mais ca reviens au même qu'à ma requet de départ

    requete de départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ID_RANDONNEUR, NOM_PRENOM,EMAIL, LE 
    FROM RANDONNEUR 
    WHERE LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY) 
    AND FLAG ='N'
    ta requet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT ID_RANDONNEUR, NOM_PRENOM, EMAIL, LE
    FROM RANDONNEUR 
    WHERE FLAG ='N'
        AND LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
    en faisant ca je n'obtient pas le ou les resultats escompte

    a+ gilles

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par gilles974 Voir le message
    ...la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.

    ...

    LE > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
    AND FLAG ='N'[/code]
    Y-a comme une incohérence, ou, à tout le moins une ambigüité, entre l'objectif énoncé et la formulation de la requête.

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par gilles974 Voir le message
    merci cinefil mais ca reviens au même qu'à ma requet de départ
    Effectivement, je n'avais pas regardé ta première requête mais seulement la dernière.

    en faisant ca je n'obtient pas le ou les resultats escompte
    Alors donne un jeu de données et le résultat que tu attends avec une formulation sans ambiguïté du souhait.

    Ma formulation était sans ambiguïté et si ta requête (et donc la mienne) donne le résultat que tu as mis dans ton premier message, rien ne me permet de penser que ce résultat est faux.

    Désolé mais ça c'est moins clair :
    la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.

  8. #8
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    je vais essayer de faire clair et simple

    j'ai un champ "LE" du type date qui correspond à la date d'enregistrement et qui est auformat "0000-00-00".

    mon but est de tester tous les enregistrements qui ont le champs "FLAG" à "N" et verifier que
    la date du jour - la date du champs "LE" est = à 30 jours
    exemple
    un randonneurs s'est incrit le
    199 GENDRE Celine xxx@xxx.com 2010-11-19 N
    ma requet qui se lancera le 2010-12-19 à 1h00 du matin, devra sélectionner le randonneur ci-dessus

    voila j'espère avoir été clair

    a+ gilles

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Tu viens d'écrire ceci :
    la date du jour - la date du champs "LE" est = à 30 jours
    Avant tu avais écrit cela :
    si la date enregistrée dans le champs "LE" est inférieure à 30 jours par rapport à la date du jour.
    Tu vois la différence ?
    Tu n'as donc qu'un signe à corriger dans la requête !

  10. #10
    Membre régulier
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 71
    Points
    71
    Par défaut
    effectivement j'ai vu la différence en l'écrivant et j'ai modifier ma requet dans la foulée

    j'attent le résultat de demain, je croise les doigts

    a+ gilles

Discussions similaires

  1. Récupération modalité suivant une date
    Par doudou29 dans le forum SAS Base
    Réponses: 6
    Dernier message: 26/05/2014, 11h25
  2. [XL-2007] Importation de données suivant une date
    Par robby98800 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2012, 12h19
  3. Réponses: 1
    Dernier message: 25/09/2009, 20h16
  4. [XL-2003] recuperation de données suivant une date
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/05/2009, 20h48
  5. Réponses: 4
    Dernier message: 05/04/2004, 10h09

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