sqlserver中关于日期根据工作日进行计算

开发中需要跟别人系统对接, 这次的对接方式是对方系统打算直接通过数据库去查询数据,而不是做成接口的方式.根据他们的需求, 这边就需要写一个视图,然后直接给对方调用.这种对接方式有个问题就是, 逻辑都需要在数据库中进行.

其中有一个字段要计算案件的预期到期时间,这个是要通过加上指定工作日计算出来的.这个只能使用函数去计算了

CREATE FUNCTION [dbo].[WorkDayAdd]
  (@curDate AS DATETIME,
   @workday AS INT
  )
  RETURNS DATETIME
AS
  BEGIN
    DECLARE @bz AS INT
    SET @bz = 0
    SELECT @bz = CASE WHEN @workday < 0
      THEN -1
                 ELSE 1 END
    SELECT @curDate = DATEADD(WEEK, @workday / 5, @curDate)
    SELECT @workday = @workday % 5

    WHILE @workday <> 0
      SELECT
        @curDate = DATEADD(DAY, @bz, @curDate),
        @workday = CASE WHEN (@@DATEFIRST + DATEPART(WEEKDAY, @curDate) - 1) % 7 BETWEEN 1 AND 5
          THEN @workday - @bz
                   ELSE @workday END
    WHILE (@@DATEFIRST + DATEPART(WEEKDAY, @curDate) - 1) % 7 IN (0, 6)
      SET @curDate = DATEADD(DAY, @bz, @curDate)
    RETURN (@curDate)
  END

转载自

https://blog.csdn.net/fddqfddq/article/details/8602276

该博客里面还有计算两个日期之间的工作日天数的函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值