2016-04-20 4 views
3

Ich schreibe Abfragen auf einem System, das jemand anderes installiert hat, daher können Tabellen hier nicht geändert werden.SQL Stunden über Nacht mit statischem Datum berechnen

Problem: Ich habe eine Tabelle, wo ich habe Datum, timeIN und timeOUT nehmen Sie die folgenden Aufzeichnungen;

 date    |  timeIN  | timerOUT 
------------------------------------------------- 
2016-01-01 00:00:00.00 | 2000-01-01 07:00 | 2000-01-01 15:00  DATEDIFF = 8H 
2016-01-02 00:00:00.00 | 2000-01-01 07:00 | 2000-01-01 15:00  DATEDIFF = 8H 
2016-01-05 00:00:00.00 | 2000-01-01 23:00 | 2000-01-01 07:00  DATEDIFF = -16H 

Wie kann ich DATEDIFF = 8H von Datensatznummer 3? Das Problem hier ist, dass alle timeIN und timeOUT Stempel das gleiche Dummy-Datum haben.

+1

Warum diese Frage abgestimmt wird, was ist das Besondere an dieser Frage? – KumarHarsh

Antwort

4

Sie können CASE Ausdruck in der DATEDIFF Funktion:

SELECT 
    Diff = 
     DATEDIFF(
      HOUR, 
      timeIn, 
      CASE 
       WHEN timeOut < timeIn THEN DATEADD(DAY, 1, timeOut) 
       ELSE timeOut 
      END 
     ) 
FROM tbl 

Dieses auf timeOut 1 Tag hinzufügen wird, wenn es weniger ist als die timeIn.

Verwandte Themen