Я довольно новичок в этом форуме и в T-SQL.
Я ищу функцию для вычисления рабочих часов в секундах на основе моей календарной таблицы. В моей календарной таблице есть 2 столбца. 1-й столбец - это дата и время открытия, а 2-й столбец - дата и время.
Я пробовал решение из @Ezlo SQL Server, считая часы между датами, исключая пт 6 вечера - пн 6 утра В его решении, когдав ту же дату он удваивает время, например, выходной сигнал должен составлять 75 секунд, а затем 150 секунд. Я хочу иметь возможность вызывать функцию в запросе, таком как WorkTime (@StartDate DATETIME, @FinishDate DATETIME), пока она проходит через мою таблицу календаря. Начальная дата и конечная дата должны быть чем-то, что я положил в качестве значения, то есть столбцы (дата создания, дата закрыта) с датами.
Т.е.: запрос с 1000 строками, подобный этому формату.
Сценарий 1
TicketID: 111111
DateCreated: 2019-01-01 10:00:52
DateClosed: 2019-01-02 08:35:00
Результат функции должен составлять 300 секунд при проверке таблицы календаря.
Сценарий 2
TicketID: 111112
DateCreated: 2019-01-02 16:30:00
DateClosed: 2019-01-02 16:15:00
Результат проверки функции должен составлять 900 секунд при проверке таблицы моего календаря.
Сценарий 3
TicketID: 111113
DateCreated: 2019-01-02 20:00:00
DateClosed: 2019-01-03 09:30:00
Результат выполнения функции: 3600с
Сценарий 4
TicketID: 111114
DateCreated: 2019-01-05 20:00:00
DateClosed: 2019-01-07 09:00:00
Результат функции: 1800 с
Календарь Таблица
Как видите, у меня 1 января установлено 08:30, поэтому не рассчитывается время (выходной). И поэтому у меня набор праздничных дней установлен одинаково.
Выходные пропускаются, см. Таблицу календаря, таким образом, это исключается, и время начинает отсчитываться в первый рабочий день.
Я пробовал несколько раз, но безуспешно заставить его работать так, как я хочу.
Надеюсь, вы, гуру, можете мне помочь мне достичь этого.