SQL函数计算两个日期间的工作日天数

返回指定开始、结束日期间的工作日天数;开始日期须小于结束日期,否则返回 0

/******************************************************************************
** 功能:返回指定开始、结束日期间的工作日天数;开始日期须小于结束日期,否则返回 0
** 作者:Danny,Li
** 日期:2010-12-09
*******************************************************************************
** 返回值列表
****************************
** 返回值 涵义
** ------- -----------------------------------------------------------
** @intdays 指定开始、结束日期间的工作日天数(包含当天)
**
*******************************************************************************
** 修订日志
****************************
** 日期 作者 修订备注
** ---------- -------- -----------------------------------------------
**
******************************************************************************
*/
CREATE FUNCTION dbo.fun_CalculateWorkdays
(
@startdate DATETIME, -- 开始日期
@enddate DATETIME -- 结束日期(结束日期须大于开始日期)
)
RETURNS INT
AS
BEGIN
DECLARE @intdays INT, @currentdate DATETIME
SET @intdays = 0
SET @currentdate = @startdate
IF (DATEDIFF(d, @startdate, @enddate) < 0 OR @startdate IS NULL OR @enddate IS NULL OR @startdate = '' OR @enddate = '')
SET @intdays = 0
ELSE
BEGIN
WHILE (DATEDIFF(d, @currentdate, @enddate) >= 0)
BEGIN
IF (DATEPART(dw, @currentdate) = 7)
SET @currentdate = DATEADD(d, 1, @currentdate)
IF (DATEPART(dw, @currentdate) = 6)
SET @currentdate = DATEADD(d, 2, @currentdate)
IF (DATEPART(dw, @currentdate) <= 5)
BEGIN
SET @currentdate = DATEADD(d, 1, @currentdate)
SET @intdays = @intdays + 1
END
END
END
RETURN (@intdays)
END

 

转载于:https://www.cnblogs.com/dannyli/archive/2011/12/01/2271354.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值