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 :

requete pour vérifier qu'une date est entre 2 champs


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Points : 55
    Points
    55
    Par défaut requete pour vérifier qu'une date est entre 2 champs
    Bonjour, j'ai un souci avec une requête qui ne donne pas le résultat escompté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT id_art
    FROM gen_article
    WHERE (
    valid_art >= 'unedate'
    AND date_event <= 'unedate'
    )
    LIMIT 0 , 30
    j'ai 1 enregistrement;
    valid_art 2006-12-10 et date_event 2006-12-04

    donc je souhaite que ma requête renvoie vrai pour "unedate" uniquement comprise entre 4-12 et 10-12, or elle me renvoie vraie pour d'autres dates, par exemple: 2006-9-30

    Je ne sais pas pourquoi, les formats de dates sont corrects dans le champs date de mysql (version 4.1.9-max).

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 285
    Points : 11 740
    Points
    11 740
    Par défaut
    Essaie toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    WHERE 'unedate' BETWEEN date_event AND valid_art ;
    Et je serais également preneur du résultat de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SHOW COLUMNS FROM gen_article ;

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Points : 55
    Points
    55
    Par défaut
    hmm, il doit-y avoir quelque chose qui m'échappe...
    en utilisant ta solution j'obtiens vrai seulement pour les 2 dates: 1er décembre et 10 décembre! C'est trop bizarre!

    Ma requête pour mon agenda n'est pas encore au point !
    Quand à l'autre requête, elle montre seuilement que mes 2 champs sont de type date...

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 285
    Points : 11 740
    Points
    11 740
    Par défaut
    Citation Envoyé par beyo
    hmm, il doit-y avoir quelque chose qui m'échappe...
    en utilisant ta solution j'obtiens vrai seulement pour les 2 dates: 1er décembre et 10 décembre! C'est trop bizarre!
    Oui... ça laisse penser que tes dates ne sont peut-être pas si bien formatées que ça...
    tu me donnerais un exemple de ta requête avec une vraie valeur au lieu de 'unedate' ? et les données de ta table (ou un extrait pertinent s'il y a trop de lignes) ?

    Citation Envoyé par beyo
    Quand à l'autre requête, elle montre seuilement que mes 2 champs sont de type date...
    Bah oui, c'est ce que je voulais vérifier

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 125
    Points : 55
    Points
    55
    Par défaut
    Bon, désolé pour la non réponse. En fait c'est réglé: en traçant les requêtes, je me suis apercu que j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    WHERE '31/12/2006' BETWEEN date_event AND valid_art ;  #OK
    WHERE '1/1/2007' BETWEEN date_event AND valid_art ;  #pas OK
    WHERE '2/1/2007' BETWEEN date_event AND valid_art ;  #pas OK
    en fait c'est le format qui n'allait pas 1/1/2007 au lien de 01/01/2007 !
    j'ai remodifié mon script pour que ça affiche bien 01/01/2007 et ça fonctionne! C'est très strict SQL!

    Merci pour l'aide

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    n'oubli pas le résolu....

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 285
    Points : 11 740
    Points
    11 740
    Par défaut
    ça ne va toujours pas. Le format à utiliser est le format ISO, à savoir 'aaaa-mm-jj', ce qui te donne donc '2007-01-01' et '2007-01-02'.

    Tu peux avoir l'impression que cela fonctionne avec ton format actuel, parce que MySQL (quand il n'est pas en mode strict) fait les conversions à la volée ; le problème est que tu ne peux jamais être trop sûr que 02/01/2007 sera interprété comme le 2 janvier ou comme le 1er février...

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

Discussions similaires

  1. Une fonction pour vérifier si une saisie est une date
    Par MasterMbg dans le forum Codes sources à télécharger
    Réponses: 10
    Dernier message: 02/10/2013, 12h18
  2. Vérifier qu'une date est comprise entre deux autres
    Par bpdelavega dans le forum Zend Framework
    Réponses: 3
    Dernier message: 03/09/2011, 22h17
  3. Requete pour voir si une date est comprise entre 2 date
    Par afrodje dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/11/2008, 16h43
  4. Vérifier qu'une date est vieille de 6 mois
    Par shirya dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/04/2007, 10h09
  5. Comment vérifier qu'une date est nulle
    Par stressy dans le forum Access
    Réponses: 7
    Dernier message: 09/12/2005, 16h41

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