Function cdDateAddSkipHolidays (nWorkingDays As Number, startDateTime As DateTime) As DateTime
'结果 = startDateTime + nWorkingDays + nHolidays(包括周末)
'下面的算法在 nWorkingDays 为负时也适用
CREATE PROCEDURE WorkDays
@dt1 datetime, @dt2 datetime, @wd int output
as
declare @days int
set @days=0
set @wd=0
while (dateadd(day, @days, @dt1) <= @dt2)
begin
if datepart(weekday,dateadd(day, @days, @dt1)) not in (1,7)
set @wd=@wd+1
set @days=@days+1
end
return @wd
declare @dt1 datetime,@dt2 datetime,@wd int
set @dt1='2004/07/10'
set @dt2='2004/08/10'
set @wd=0
exec WorkDays @dt1, @dt2, @wd output
select @wd