在很多情况下,计算日期间隔需要将休息日减去。下面是用SQL语句设计的减去休息日的函数。但这里的休息日只包括星期日和星期六,包括其它休息日的程序的设计与之类似,只不过是多使用几次case when 语句而已。还有,本语句不能进行跨年度计算,但依据此方法很容易做到。本语句中日期间隔为负数时间隔为0,是否需要可以看实际情况而定。
declare @SCHED_DATE varchar(10)
declare @CLOSE_DATE varchar(10)
set @SCHED_DATE='2008-1-1'
set @CLOSE_DATE='2008-12-31'
select case when abs(datediff(d,@SCHED_DATE,@CLOSE_DATE))-2*abs(DATEPART(wk,@SCHED_DATE)-
DATEPART(wk,@CLOSE_DATE))<0
then 0 else abs(datediff(d,@SCHED_DATE,@CLOSE_DATE))-
2*abs(DATEPART(wk,@SCHED_DATE)-DATEPART(wk,@CLOSE_DATE)) end 日期间隔