2014-09-05 13 views
-2

ввода таблицыСдвиг часов между двумя датами

Start time  End Time 
8/12/14 17:00 8/14/14 12:00 

мне нужно разделить время сдвига и показать выход, как показано ниже

11:00 to 23:00 23:00 to 11:00 
     19    24 

Расчет РАБОТУ

Date  11:00 to 23:00 23:00 to 11:00 
8/12/14  6    1 
8/13/14  12    12 
8/14/14  1    11 

Total   19    24 
+0

И где же '19' и' 24'come из? Пожалуйста, объясните, что вы пытаетесь сделать. –

+0

@juergend Можете ли вы посмотреть мой обновленный вопрос? – Luv

+0

Являются ли эти моменты времени в этой смене? Я не понимаю. Как выглядят ваши исходные данные? –

ответ

1

Вы можете используйте рекурсивное общее табличное выражение для генерации последовательности часов между датами начала и окончания, а затем аргумент case для eval хать которые варьируются она попадает, а затем просуммировать агрегировать:

DECLARE @T TABLE (StartTime DATETIME, EndTime DATETIME) 
INSERT @T VALUES ('8/12/14 17:00', '8/14/14 12:00') 

;WITH cte AS 
    (
    SELECT StartTime AS dt, EndTime 
    FROM @T 
    UNION ALL 
    SELECT DATEADD(MINUTE, 60, dt) AS dt, EndTime 
    FROM cte 
    WHERE dt < DATEADD(HOUR, -1, EndTime) 
    ) 

SELECT 
    SUM(
    CASE 
     WHEN CAST(dt AS TIME) >= '11:00' AND CAST(dt AS TIME) < '23:00' THEN 1 
     ELSE 0 
    END) AS '11:00 to 23:00', 
    SUM(
    CASE 
     WHEN CAST(dt AS TIME) >= '11:00' AND CAST(dt AS TIME) < '23:00' THEN 0 
     ELSE 1 
    END) AS '23:00 to 11:00' 
FROM cte 

Я уверен, что он может быть улучшен, но это должно дать вам желаемый результат. Выход

Sample SQL Fiddle

Пример:

11:00 to 23:00 23:00 to 11:00 
-------------- -------------- 
19    24 

Это SQL Fiddle показывает время обработки в 30-минутными интервалами, выход:

11:00 to 23:00 23:00 to 11:00 
-------------- -------------- 
23.5   25.5 
+0

Спасибо. Есть ли способ рассчитать минуты? Я имею в виду, что время может быть ** 18: 30' ** – Luv

+0

@Luv Я добавил вторую скрипку, которая обрабатывает время с интервалом в 30 минут и включает половину часов в выходе, было то, что вы имели в виду? – jpw

Смежные вопросы