由table來設置是否為工作日,(如果為節假日則設置為非工作日,即talbe會設置每天是否為工作日)
帶入的日期必須為工作日。
ALTER function [dbo].[fn_workdayadd](@date datetime, @days int)
returns datetime --nvarchar(100)
as
begin
![](/Images/OutliningIndicators/None.gif)
declare @i int--計算工作天
set @i=1
![](/Images/OutliningIndicators/None.gif)
declare @flag nvarchar(10)--是否為工作天
![](/Images/OutliningIndicators/None.gif)
WHILE (@i<=@days)
BEGIN
if exists (SELECT top 1 flag FROM dbo.BCC_Admin_WorkDay
where flag='Y' and convert(nvarchar(10),Date,120)=convert(nvarchar(10),@date+1,120))--工作天
begin
set @i=@i+1
set @date=@date+1
set @flag='Y'
end
else
begin
set @date=@date+1
set @flag='N'
end
CONTINUE
END
![](/Images/OutliningIndicators/None.gif)
--最后一天是工作天,看其后是否有不為工作天的
while exists(SELECT top 1 flag FROM dbo.BCC_Admin_WorkDay where convert(nvarchar(10),Date,120)=convert(nvarchar(10),@date+1,120) and flag='N')
begin
set @date=@date+1
end
![](/Images/OutliningIndicators/None.gif)
return convert(nvarchar(10),@date,120)--+' '+@flag
end