Рассчитать ожидаемое время окончания в SQL Server - PullRequest
0 голосов
/ 29 июня 2018

У меня есть следующая политика SLA: Рабочие дни: с понедельника по пятницу. Рабочее время: с 9:00 до 18:00.

Кроме них, другие рабочие часы считаются нерабочими. Суббота, воскресенье и праздничные дни исключаются из всех расчетов.

Сценарий 1: билет создается в пятницу, 29 июня 2018 года, 17:30 (17:30). Продолжительность рабочего дня составляет 12 часов (ИЛИ 720 минут). Я хочу рассчитать ожидаемую конечную дату, которая будет примерно в понедельник, 2 июля 2018 г., 6:00, потому что после 18:00 с 29 июня до 23:59, после рабочих часов, а в понедельник с 12:00 до 6:00. после рабочего дня.

Сценарий 2: Если после рабочего времени будет 18 часов, то примерно в качестве конечной даты будет понедельник, 2 июля, 21:00 (21:00). 6 часов (29 июня) + 9 часов (утро 2 июля) + 3 часа (ночь 2 июля).

Как рассчитать нерабочее время в расчете ожидаемой даты и времени окончания в SQL Server 2008?

1 Ответ

0 голосов
/ 29 июня 2018

Это должно помочь вам начать, я делал нечто подобное - и вы можете подумать о создании праздничного стола ...

DECLARE @d1 DATETIME = '2018-06-01', 
        @d2 DATETIME = '2018-06-04'

SELECT Datediff(dd, @d1, @d2) 
      + CASE WHEN Datepart(dw, @d1) = 7 THEN 1 ELSE 0 END 
       - (Datediff(wk, @d1, @d2) * 2 ) 
       - CASE WHEN Datepart(dw, @d1) = 1 THEN 1 ELSE 0 END + 
       - CASE WHEN Datepart(dw, @d2) = 1 THEN 1 ELSE 0 
END AS DaysBetween
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...