動態計算工作日

由table來設置是否為工作日,(如果為節假日則設置為非工作日,即talbe會設置每天是否為工作日)
帶入的日期必須為工作日。

None.gifALTER function [dbo].[fn_workdayadd](@date datetime@days int)
None.gif    
returns datetime --nvarchar(100)
None.gif
as
None.gif
begin
None.gif
None.gif
declare @i int--計算工作天
None.gif
set @i=1
None.gif
None.gif
declare @flag nvarchar(10)--是否為工作天
None.gif

None.gif
WHILE (@i<=@days)
None.gif
BEGIN
None.gif    
if exists (SELECT top 1 flag FROM dbo.BCC_Admin_WorkDay 
None.gif            
where flag='Y' and convert(nvarchar(10),Date,120)=convert(nvarchar(10),@date+1,120))--工作天
None.gif
        begin
None.gif                
set @i=@i+1
None.gif                
set @date=@date+1
None.gif                
set @flag='Y'
None.gif        
end
None.gif        
else
None.gif        
begin
None.gif                
set @date=@date+1
None.gif                
set @flag='N'
None.gif        
end
None.gif
CONTINUE
None.gif
END
None.gif
None.gif
--最后一天是工作天,看其后是否有不為工作天的
None.gif
while exists(SELECT top 1 flag FROM dbo.BCC_Admin_WorkDay where convert(nvarchar(10),Date,120)=convert(nvarchar(10),@date+1,120and flag='N')
None.gif
begin
None.gif
set @date=@date+1
None.gif
end
None.gif
None.gif
return convert(nvarchar(10),@date,120)--+'  '+@flag
None.gif
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值