2 つの日付間の営業日を計算する関数があります。基本的なクエリは次のとおりです。
declare @start datetime;
set @start = '2013-06-14';
declare @end datetime;
set @end = '2013-06-17';
SELECT
(DATEDIFF(dd, @Start, @end) +1) -- total number of days (inclusive)
-(DATEDIFF(wk, @Start, @end) * 2) -- number of complete weekends in period
-- remove partial weekend days, ie if starts on sunday or ends on saturday
-(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @end) = 'Saturday' THEN 1 ELSE 0 END)
したがって、営業日がdatediff in daysと異なる場合、日付に週末が含まれているかどうかを判断できます
SELECT case when (DATEDIFF(dd, @Start, @end) +1) <>
(DATEDIFF(dd, @Start, @end) +1) -- total number of days (inclusive)
-(DATEDIFF(wk, @Start, @end) * 2) -- number of complete weekends in period
-- remove partial weekend days, ie if starts on sunday or ends on saturday
-(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @end) = 'Saturday' THEN 1 ELSE 0 END) then 'Yes' else 'No' end as IncludesWeekends
またはより簡単
SELECT (DATEDIFF(wk, @Start, @end) * 2) +(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END) +(CASE WHEN DATENAME(dw, @end) = 'Saturday' THEN 1 ELSE 0 END) as weekendDays