Я нашел ниже TSQL довольно элегантное решение (у меня нет полномочий для запуска функций). Я обнаружил, что DATEDIFF
игнорирует DATEFIRST
, и я хотел, чтобы мой первый день недели был понедельником. Я также хотел, чтобы первый рабочий день был установлен на ноль, и если он выпадает на выходные в понедельник, будет ноль. Это может помочь кому-то, у кого есть несколько другое требование :)
Он не обрабатывает праздничные дни
SET DATEFIRST 1
SELECT
,(DATEDIFF(DD, [StartDate], [EndDate]))
-(DATEDIFF(wk, [StartDate], [EndDate]))
-(DATEDIFF(wk, DATEADD(dd,-@@DATEFIRST,[StartDate]), DATEADD(dd,-@@DATEFIRST,[EndDate]))) AS [WorkingDays]
FROM /*Your Table*/