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 :

Between entre 2 dates : comment inclure les bornes


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut Between entre 2 dates : comment inclure les bornes
    Bonjour tout le monde,

    Je viens de me rendre compte en utilisant le BETWEEN entre 2 dates, que si les dates sont égales, les enregistrements ne sont pas retournés, je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT tblCouleur.id_employe, SUM(tblCouleur.nb_cartouches) AS nb
          FROM commande_imprimante AS tblCouleur, commandes
          WHERE tblCouleur.type_cartouche = 'couleur'
    and commandes.no_commande=tblCouleur.no_commande
    AND commandes.date_commande BETWEEN '2006-01-10' AND '2006-01-10'
          GROUP BY tblCouleur.id_employe
    sur cette requete, rien n'est retourné alors que j'ai bien une commande le 2006-01-10.

    bon je pourrais ajouter une clause "OR date_commande='2006....'" mais bon je voulais savoir si c'etait normal, ou si une fonction alternative existait

    merci d'avance !

  2. #2
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 84
    Points
    84
    Par défaut
    Salut,
    d'après ce que j'ai vu dans le manuel de mysql, çà ne me parait pas normal...
    Il est dit :
    expression BETWEEN min AND max

    Si expression est supérieure ou égale à min et expression est inférieure ou égale à max, BETWEEN retourne 1, sinon 0. Ceci est équivalent à l'expression (min <= expression AND expression <= max) si tous les arguments sont du même type. Dans tous les autres cas, la conversion de type prends place, selon les règles suivantes, mais appliquée aux trois arguments. Notez que avant la 4.0.5, les arguments étaient convertis au type de expr.
    CF: http://dev.mysql.com/doc/refman/5.0/...operators.html

    Un expert pourra suremnt mieux te renseigner.

    Nico

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    effectivement, peut-être que ce n'est qu'une question d'interpretation au niveau des dates.

    en fait je suis obligé de comparer à la date max avec 1 jour de plus pour faire entrer la valeur.

    parce que je pense que l'utilisateur si il saisit "je veux les commandes entre le 01/01/2006 et le 05/01/2006" il s'attend à avoir aussi les commandes passées le 5 non?

    donc moi il faut que je fasse la requete entre le 01 et le 06 pour prendre en compte le 05...

  4. #4
    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
    Quel est le format de commandes.date_commande ?

    Si c'est un champ DATETIME ou TIMESTAMP, alors vérifiez l'heure de la commande qui doit être 00:00:00 pour qu'elle soit retournez par votre requête. Ou alors modifiez votre requête de deux façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT tblCouleur.id_employe, SUM(tblCouleur.nb_cartouches) AS nb
          FROM commande_imprimante AS tblCouleur, commandes
          WHERE tblCouleur.type_cartouche = 'couleur'
    and commandes.no_commande=tblCouleur.no_commande
    AND commandes.date_commande >= '2006-01-10' 
    AND commandes.date_commande < '2006-01-10' + INTERVAL 1 DAY
          GROUP BY tblCouleur.id_employe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT tblCouleur.id_employe, SUM(tblCouleur.nb_cartouches) AS nb
          FROM commande_imprimante AS tblCouleur, commandes
          WHERE tblCouleur.type_cartouche = 'couleur'
    and commandes.no_commande=tblCouleur.no_commande
    AND commandes.date_commande BETWEEN '2006-01-10 00:00:00' AND '2006-01-10 23:59:59'
          GROUP BY tblCouleur.id_employe

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    merci beaucoup, j'ai choisi la seconde méthode et ca fonctionne très bien, effectivement par défaut mysql doit se placer à 00:00:00 d'où l'exclusion du dernier jour.

    bonne prog !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/07/2007, 11h57
  2. [Dates] Comment gérer les dates sur un blog ?
    Par psychoBob dans le forum Langage
    Réponses: 10
    Dernier message: 14/06/2006, 14h09
  3. Réaliser un BETWEEN entre 2 dates (mois, année)
    Par PpPool dans le forum Oracle
    Réponses: 3
    Dernier message: 26/04/2006, 10h20
  4. Comment utiliser Between entre 2 dates en SQL DELPHI/Paradox
    Par tarbala dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/04/2006, 10h33
  5. [ClassPath]Comment inclure les librairies dans un .BAT
    Par Kyti dans le forum Général Java
    Réponses: 2
    Dernier message: 26/03/2005, 08h07

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