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 :

Comparaison d'heure SQL server


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Par défaut Comparaison d'heure SQL server
    Bonjour,

    J'ai dans ma base sql deux champs datetime : date_debut, et date_fin

    Je voudrais prendre tous les enregistrements se deroulant entre 7h et 20h (la journée quoi)
    alors pour ça, j'ai fait la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select Cle from TblOutage T where_
    datepart(HOUR,T.END_DATE)>7
    and datepart(hour,T.PLANNED_START_DATE)<20
    ORDER BY datepart(hour,T.PLANNED_START_DATE) asc
    et c'est ok, ça marche (*sauf pour ceux qui se déroulent de 6h à 21h, mais là je ne sais vraiment pas comment faire ).

    Maintenant pour la nuit c'est un peu plus compliqué, car je ne peux pas faire la requete inverse (de 20h à 7h) car bon dire > 20 h ça ne marche que pour 20h-23h59.

    Alors ma question est : en sql server, ya t-il moyen de comparer juste des heures ? ça simplifierai la chose quand même....

    et si vous avez une solution pour le pb muni d'un asterix * ce serait cool aussi ....


    Merci d'avance à vous en tout cas !!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Comme je l'ai écrit dans de nombreux article les calculs temporels sont les plus complexes...
    A lire :
    http://sqlpro.developpez.com/cours/gestiontemps/
    http://baptiste-wicht.developpez.com...-sql/datetime/

    Une solution pour votre problème peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    CREATE TABLE T_HORAIRES_HRS
    (HRS_ID        INT,
     HRS_DEBUT     DATETIME,
     HRS_FIN       DATETIME)
    GO
     
    INSERT INTO T_HORAIRES_HRS VALUES (1, '20050101 11:00:00', '20050101 15:00:00')
    INSERT INTO T_HORAIRES_HRS VALUES (1, '20050101 22:00:00', '20050102 02:00:00')
    INSERT INTO T_HORAIRES_HRS VALUES (1, '20050101 15:00:00', '20050102 22:00:00')
    GO
     
    CREATE FUNCTION F_T_PERIODE (@DEB int, @FIN int)
    RETURNS TABLE
    AS
    RETURN
    (SELECT *
     FROM   T_HORAIRES_HRS
     WHERE  DATEPART(Hour, HRS_DEBUT) >= @DEB
       AND  DATEPART(Hour, HRS_DEBUT) <= @FIN 
            + CASE
                 WHEN @FIN < @DEB THEN  24
                 ELSE 0
              END
       AND  DATEDIFF(HOUR, HRS_DEBUT, HRS_FIN ) <= @FIN - @DEB 
            + CASE
                 WHEN @FIN < @DEB THEN  24
                 ELSE 0
              END)
    GO
     
    -- événements entre 7h et 19h
    SELECT *
    FROM   F_T_PERIODE(7, 19) 
     
    -- événements entre 20h et 6h
    SELECT *
    FROM   F_T_PERIODE(20, 6)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Comparaison de DB SQL Server
    Par olibara dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 09/05/2010, 18h02
  2. [SQL SERVER / VBDOTNET] comparaison de date/heure
    Par t1marlartiste dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/06/2007, 09h51
  3. colonne heure SQL SERVER
    Par flydragon dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/04/2006, 15h55
  4. [Sql-Server][Access] stocker uniquement l'heure
    Par lolhangman dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/04/2005, 15h43
  5. Heure sous SQL SERVER
    Par kisscoolfresh dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/01/2004, 17h43

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