计算两个日期段之间有多少个工作日

本文介绍了一个使用SQL Server T-SQL编写的脚本,该脚本能够计算两个日期之间的总工作日数,排除周末及节假日。通过定义开始日期和结束日期,并使用WITH语句递归计算每个日期的工作日状态。

DECLARE @bt DATETIME,@et DATETIME SELECT @bt='20090801',@et='20090913' ;WITH t AS ( SELECT DATEDIFF(dd,@bt,@et)+1 AS [days], DATEPART(w,@bt+@@DATEFIRST-1) AS [wd] --@@DATEFIRST-1 按周一为一周的第一天查询 ) SELECT [Workdays]=[days]/7*5+[days]%7 - CASE WHEN 6 BETWEEN [wd] AND [wd]+[days]%7-1 THEN 1 ELSE 0 END - CASE WHEN 7 BETWEEN [wd] AND [wd]+[days]%7-1 THEN 1 ELSE 0 END FROM t /* Workdays ----------- 30 */

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值