计算出两日期差,创建游标 sql 去除节假日

DECLARE cur_RemoveHolidays cursor for     
SELECT  ST_SUID,DT_ACCEPT_TIME,DT_FINISH_TIME FROM APPLY_INFO;      

--打开游标
open cur_RemoveHolidays               
DECLARE @ST_SUID VARCHAR(50)
declare @StartTime DATETIME
DECLARE @EndTime DATETIME


--循环游标
fetch next from cur_RemoveHolidays into @ST_SUID,@StartTime, @EndTime
while @@FETCH_STATUS=0  
begin
  
update  APPLY_INFO 
set FinishTime = FinishTime - WeekAndHoliday,
IsReckonHoliday = 1
from (SELECT @ST_SUID AS ST_SUID,COUNT(WeekEndFlag) AS WeekAndHoliday 
                 FROM dbo.Dim_Date
                 WHERE mDate
                       BETWEEN @StartTime AND @EndTime
                       AND                               (
                           WeekEndFlag = 1
                           OR HolidayFlag = 1
                       ) ) A inner join APPLY_INFO B
on  B.ST_SUID = @ST_SUID 
WHERE IsReckonHoliday IS NULL OR IsReckonHoliday = 0

fetch next from cur_RemoveHolidays into @ST_SUID,@StartTime ,@EndTime 
end--关闭释放游标
close cur_RemoveHolidays 
DEALLOCATE cur_RemoveHolidays  



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值