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

MS SQL Server Discussion :

probleme avec WHERE ... BETWEEN ... AND ...


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 25
    Points : 18
    Points
    18
    Par défaut probleme avec WHERE ... BETWEEN ... AND ...
    Bonjour,
    tout d'abord voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(User_Stats) AS C2 
    FROM _TracesCnx 
    WHERE convert(numeric,DtCnx)
    BETWEEN convert(numeric,convert(datetime,'29/09/2005')) and convert(numeric,convert(datetime,'29/09/2005'))
    GROUP BY convert(numeric,convert(datetime,DtCnx)),dtcnx

    en fait je fais une recherche de record via une clause WHERE qui utilise le BETWEEN or je me suis rendu compte que ca marchait pas si bien que ca...
    les enregistrements qui me sont ramenés, corresondent aux enregistrements du 28/09/2005 après 12h et du 29/09/2005 avant 12h or moi je veux pour la journée du 29/09/2005 de 0h à 23h59...
    Quelqu'un a certainement dû rencontrer ce genre de problème ! pouvez vous m'en dire plus ? comment puis je y arriver ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Que fait votre DtCnx ? Je ne comprend pas bien votre condition.
    De manière plus générale, pourquoi convertir en decimal ? Pourquio ne pas utiliser les fonctions temporelles idoines ?

  3. #3
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Points : 1 281
    Points
    1 281
    Par défaut
    au lieu d'utiliser BETWEEN, utilise < et >

    dtcnx < .... AND dtcnx > .....

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Citation Envoyé par HULK
    au lieu d'utiliser BETWEEN, utilise < et >

    dtcnx < .... AND dtcnx > .....
    ça, ça ne va servir à rien. Le remplacement de between par < et > est une des premières choses que l'optimiseur fait.

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ha... bah moi je fait le contraire

    je remplace <> par between

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Moi je fais comme Fre_D je vire tout les <> par contre

    j'utiliserais un convert Smalldatetime a la place du datetime

    De plus je ferais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cast(convert(char(8),dtcnx,112)as int)
    Ce qui transformera ta date en entier de type yyyymmdd et la le between fonctionnera tres bien !!!

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(User_Stats) AS C2 
    FROM _TracesCnx 
    WHERE convert(numeric,DtCnx) 
    BETWEEN convert(numeric,convert(datetime,'29/09/2005')) and convert(numeric,convert(datetime,'29/09/2005')) 
    GROUP BY convert(numeric,convert(datetime,DtCnx)),dtcnx
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(User_Stats) as C2 FROM _TracesCnx
    WHERE DtCnx BETWEEN '29-09-2005 0:0:0' and '29-09-2005 23:59:59'
    GROUP BY DtCnx

Discussions similaires

  1. probleme avec where is not null
    Par salyiohh dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/03/2012, 01h22
  2. probleme avec WHERE
    Par tarmo57 dans le forum Débuter
    Réponses: 2
    Dernier message: 23/01/2009, 23h32
  3. Réponses: 3
    Dernier message: 08/07/2008, 15h06
  4. [MySQL] Requête avec WHERE 1 AND et plein de OR le AND n'est pas pris en compte
    Par alsaco68 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/01/2008, 10h09
  5. Probleme avec le look and feel swing plaf metal ?
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 12/01/2007, 11h01

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