2016-04-20 3 views
3

Я пишу Запросы в системе, которую кто-то еще установил, поэтому таблицы здесь не могут быть изменены.SQL Рассчитайте часы за ночь со статической датой

проблема: У меня есть таблица, где у меня есть дата, время и время .

 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 

Как я могу получить DATEDIFF = 8H из номера записи 3? Проблема заключается в том, что все метки времени и времени имеют ту же дату фиктивного типа.

+1

Почему этот вопрос поднят на голосование? Что такого особенного в этом вопросе? – KumarHarsh

ответ

4

Вы можете использовать CASE выражение внутри функции DATEDIFF:

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

Это добавит один день на timeOut, если это меньше, чем timeIn.