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 :

Sélection d'une plage de dates


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Sélection d'une plage de dates
    Ma base de données est sous SQL Server, je veus sélectionner une plage de date selon les deux dates que va entrer l'utilisateur. J'ai écrit une procédure stockée dans SQL Server voici le Code

    Create procedure SelectionDate @(Date1 datetime, @Date2 datetime)
    AS
    select * from Finances where DateFinance >=@Date1 and DateFinance <=@Date2

    Lorsque j'apelle cette procédure stokée dans VB, il affiche le résultat sans inclure la dernière date alors que la réquête spécifie bien <=@Date2.
    Ce qui est curieux c'est que même lorsque je fais cette réquête dans l'analyseur de réquette de SQL Server, il m'affiche le même résultat.
    Si dans la table j'ai par exemple les dates suivantes : 10/10/2004, 12/10/2004,13/10/2004,15/10/2004,16/10/2004,18/10/2004.
    Si je lui demande un Select * from Finances where Date1>='12/10/2004 and Date2 <='16/10/2004', il sélectionne "10/10/2004, 12/10/2004,13/10/2004,15/10/2004" sans inclure le 16/10/2004.
    S'il vous plaît ma question est de savoir comment faire une requête sous SQL Server pour sélectionner une plage de date en incluant la première et la dernière
    merci d'avance pour votre disponibilité

  2. #2
    Membre actif
    Inscrit en
    Février 2003
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 182
    Points : 206
    Points
    206
    Par défaut
    Je te conseille de formatter tes dates en 'yyyy-mm-dd' dans ton where
    comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    where convert&#40;varchar&#40;10&#41;,DateFinance,112&#41; >=@Date1 
    and convert&#40;varchar&#40;10&#41;,DateFinance,112&#41; <=@Date2
    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Points : 122
    Points
    122
    Par défaut
    Yo !
    Citation Envoyé par Bouanda
    Si je lui demande un Select * from Finances where Date1>='12/10/2004 and Date2 <='16/10/2004', il sélectionne "10/10/2004, 12/10/2004,13/10/2004,15/10/2004" sans inclure le 16/10/2004.
    Le problème vient du fait que le type DateTime, comme son nom l'indique, contient une date et une heure.

    Si tu ne précises pas l'heure dans ta requête, le moteur SQL assume que l'heure est 00:00:00.
    Donc, dans ton exemple, ta requête sera interprétée comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from Finances where Date>='12/10/2004 00&#58;00&#58;00' and Date <='16/10/2004 00&#58;00&#58;00'
    Si dans ta table, tu n'as aucun enregistrement dont date est '16/10/2004 00:00:00', ton résultat s'arrêtera à la date précédente...

    De plus, utilise plutôt BETWEEN...

    Dans l'analyseur de requête, essaie plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from Finances where Date between '12/10/2004 00&#58;00&#58;00' and '16/10/2004 23&#58;59&#58;59'

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci de ce qu'on a des gens qui peuvent prendre leur temps et aider
    je n'est pas encore esayé mais je sais que ça marchera

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

Discussions similaires

  1. [XL-2003] Sélection d'une plage de cellules selon la date
    Par iIncoming dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/07/2013, 19h09
  2. Sélection d'une plage de dates par macro très lente
    Par yvesduc dans le forum QlikView
    Réponses: 1
    Dernier message: 11/03/2010, 16h48
  3. Réponses: 16
    Dernier message: 14/09/2006, 07h43
  4. [SQL Server 8] Trouver une plage de date
    Par Baquardie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/04/2006, 20h30
  5. [date] Recherche dans une plage de dates
    Par astro84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/06/2005, 18h13

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