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] Comment fonctionne la clause BETWEEN ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sami_c
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mai 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 764
    Par défaut [MySQL] Comment fonctionne la clause BETWEEN ?
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM edtudiant 
    WHERE date_naissance BETWEEN '1990-01-01' AND '1990-02-01'
    cette requête ne m'affiche pas les étudiant nés le 1/1/1990 ni ceux né le 1/2/1990 !!! Doc la clause BETWEEN prend un interval fermé !! Comment faire pour que les bornes soient pris en considération, sans devoir utiliser un truc pareil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM edtudiant 
    WHERE date_naissance >= '1990-01-01' 
      AND date_naissance <= '1990-02-01'

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    BETWEEN est inclusif sous SQL SERVER

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Valeur des résultats
    BETWEEN renvoie le résultat TRUE si la valeur de test_expression est supérieure ou égale à celle de begin_expression et inférieure ou égale à celle de end_expression.
     
    NOT BETWEEN renvoie le résultat TRUE si la valeur de test_expression est inférieure à celle de begin_expression ou supérieure à celle de end_expression.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Attention : vous n'avez respecté les règles du forum en indiquant :
    - votre SGBD et sa version
    - la description de vos tables

    Toujours est-il en supposant que vous êtes sous Oracle et que la colonne date_naissance est de type DATE alors certaines lignes peuvent être exclues du résultat à cause des heures / minutes / secondes.

  4. #4
    Membre éclairé Avatar de sami_c
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mai 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 764
    Par défaut
    Citation Envoyé par HULK
    BETWEEN est inclusif sous SQL SERVER
    je suis sous MySQL, désolé de ne pas l'avoir mentionné, je croyais que la clause BETWEEN était indépendante du SGBD !!!

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    En effet, BETWEEN est inclusif et devrait être indépendant du SGBD.
    Toutefois, dans le cas cité par Magnus, si la colonne date_naissance contient une heure en plus de la date, le test de la borne supérieure ne sera pas toujours vérifié. Il faut comparer des données de types comparables.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre éclairé Avatar de sami_c
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Mai 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 764
    Par défaut
    les champs sont de type DATE et non pas DATETIME, donc on a uniquement le jour, le moi et l'année !!

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Et en CASTant tes constantes ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par sami_c
    les champs sont de type DATE et non pas DATETIME, donc on a uniquement le jour, le moi et l'année !!
    Justement, on ne peut savoir que votre SGBD possède cette distinction.
    En l'occurence je ne suis pas spécialiste MySQL et sous Oracle il n'existe que le type DATE (le type DATETIME n'existe pas).
    Toutefois, essayez d'appliquer la remarque de al1_24.

Discussions similaires

  1. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10
  2. Inclure la borne de fin dans la clause between
    Par psyco2604 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/10/2004, 17h52
  3. Comment fonctionne le ClassExplorer ?
    Par borisd dans le forum C++Builder
    Réponses: 7
    Dernier message: 30/09/2004, 17h44
  4. Comment fonctionne le CVS ?
    Par mathieu dans le forum CVS
    Réponses: 6
    Dernier message: 23/03/2004, 11h26
  5. [Jboss][ mysql] : Comment configurer ?
    Par PeteMitchell dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 02/03/2004, 14h21

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