В свете есть эти две даты исходя из таблицы:TSQL DATEDIFF только рабочее время
2014-12-17 14:01:03.523 - 2014-12-20 09:59:28.783
мне нужно знать дату различий в часах, считая, что в день я могу рассчитывать часы только от 08 AM и 17:00.
Конечно, субботы и воскресенья не должны включаться.
Я попытался использовать этот код внутри select, но я получил только разницу в днях, за исключением суббот и воскресенья.
(DATEDIFF(HOUR, convert(datetime,t.EXT_DATAINS-2), convert(datetime,b.EXT_DATAINS-2)) + 1)
-(DATEDIFF(wk, convert(datetime,t.EXT_DATAINS-2), convert(datetime,b.EXT_DATAINS-2)) * 2)
-(CASE WHEN DATENAME(dw, convert(datetime,t.EXT_DATAINS-2)) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, convert(datetime,b.EXT_DATAINS-2)) = 'Saturday' THEN 1 ELSE 0 END) differenza
Пример:
2014-12-17 : 3hrs
2014-12-18 : 8hrs
2014-12-19 : 8hrs
2014-12-20 : 2hrs
Tot : 21hrs
Возможный дубликат [Расчет рабочего времени между двумя датами] (http://stackoverflow.com/questions/5274208/calculate-business-hours-between-two-dates) – Dan
Нет стандартной функции, которая поможет вам в этом. В дополнение к определению ваших «рабочих часов» (время обеденного перерыва?) И графика отпуска, вы должны определить, что произойдет, когда диапазон начинается или заканчивается вне рабочего времени. Например: если он идет от 3PM - 6PM, сколько часов? Как насчет 3AM - 10PM? –
Что вы хотите в результате разницы между этими двумя датами? –