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

Développement SQL Server Discussion :

Intervalle date et heure [2012]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut Intervalle date et heure
    Bonjour,

    Je bloque sur une requête que je dois faire et qui me parait simple mais dont je n'arrive pas à trouver la solution.

    Je dois faire un select sur des champs dans un intervalle de dates et d'heure.

    J'avais fait un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    FROM ...
    WHERE TR.DATE BETWEEN '2014-10-30' AND '2014-11-06'
    Cela me donnait le bon résultats, néanmoins je dois ajouter la gestion d'heure à savoir ramener des infos entre le 30/10 à 17h00 et le 06/11 à 09h00 par exemple.

    J'ai essayé un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    FROM ...
    WHERE (TR.DATE >= '2014-10-30' AND TR.HEURE >= '17:00:00') AND (TR.DATE <= '2014-11-06' AND TR.HEURE <= '09:00:00')
    Mais ça ne fonctionne pas.
    Le champ TR.DATE est un datetime et le champ TR.HEURE un time(7). J'ai aussi essayé comme heure : '17:00:00.0000000' mais rien non plus.

    Je passe surement à coté de quelque chose de simple. Si quelqu’un aurait une idée, je suis preneur. Merci !

  2. #2
    Membre émérite Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Par défaut
    C'est l'écriture de ta condition qui pose problème car en regardant que ces 2 conditions (on peut ce le permettre car ta clause where ne contient pas de or ) on s'aperçois que le résultat sera toujours vide ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TR.HEURE >= '17:00:00' and TR.HEURE <= '09:00:00'
    C'est un peut plus complexe que ça , si TR.DATE est égale a la borne de droite alors il faut aussi que l'heure soit limité sinon non , idem pour la borne de gauche ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ((TR.DATE = '2014-10-30' AND TR.HEURE >= '17:00:00') or TR.DATE >  '2014-10-30'  ) AND (TR.DATE < '2014-11-06'  or (TR.DATE = '2014-11-06' AND TR.HEURE <= '09:00:00'))

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2013
    Messages : 80
    Par défaut
    Ah oui, j'avais le mauvais raisonnement, on a besoin de vérifier les heures que des deux extrémités en effet.
    Merci énormément !

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    En fait, ce serait nettement plus facile si on regroupait l'heure et la date dans une seule et même donnée.

    La clause WHERE devient alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE CAST(TR.DATE AS DATETIME) + CAST(TR.HEURE AS DATETIME) BETWEEN '20141030 17:30:00.000' AND '20141106 09:00:00.000'
    Ce qui est quand même beaucoup plus clair non ? Après bien sûr, faut voir niveau performance si c'est acceptable car avec ça, à moins que l'optimiseur arrive à se démerder, aucun index placé sur les colonnes ne sera utilisables.

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

Discussions similaires

  1. Intervalle Date Heure
    Par ASWEX dans le forum Excel
    Réponses: 8
    Dernier message: 11/04/2008, 16h57
  2. Pb Calcul de dates ET heure
    Par priest69 dans le forum Access
    Réponses: 4
    Dernier message: 13/06/2005, 12h33
  3. récupérer la date et heure système
    Par Rnx69 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2005, 15h43
  4. [date et heure] convertion d'une date en chaîne
    Par jean-jacques varvenne dans le forum SQL
    Réponses: 5
    Dernier message: 23/03/2005, 11h31
  5. Manipulations de dates et heures
    Par benj63 dans le forum C++
    Réponses: 5
    Dernier message: 16/12/2004, 15h09

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