SQL Server 自定义函数 DateAddWorkdays 按工作日加日数

碰到一个需要按工作日向后计算天数的帖子,写了个算多少个工作日之后的日期函数。

IF OBJECT_ID('dbo.DateAddWorkdays') IS NOT NULL
    DROP FUNCTION DateAddWorkdays
GO

-- 求 @date 之后的第 @workdays 个工作日
CREATE FUNCTION DateAddWorkdays(@workdays int, @date datetime)
RETURNS datetime
AS
BEGIN
    -- 必须调用 SET DATEFIRST 1 保证休日判断的正确
    IF @@DATEFIRST <> 1
        RETURN NULL

    DECLARE @weekday int
    DECLARE @weeks int
    DECLARE @days int
    DECLARE @fulldays int

    SET @weekday = DatePart(weekday, @date) -- 起始日星期几?
    IF @weekday = 5                         -- 周五多经过2个休日
        SET @fulldays = 2
    ELSE IF @weekday = 6                    -- 周六多经过1个休日
        SET @fulldays = 1
    ELSE
        SET @fulldays = 0                   -- 其它:第二天就是工作日
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值