sql 查询某个日期的几个工作日前的日期

查询一个日期的几个工作日之前的日期:

写了一个函数,如下:

CREATE FUNCTION [dbo].[GetAgoWorkDay]
(
 -- Add the parameters for the function here
 @thisTime date,--某个时间点
 @agoWorkDays int--多少个工作日之前
)
RETURNS date
AS
BEGIN
 -- Declare the return variable here
 DECLARE @agodays  int--前x天
 DECLARE @workdays int--几个工作日
 DECLARE @agoday date--前几天的日期
 DECLARE @isworkday int--是否为工作日

 -- Add the T-SQL statements to compute the return value here
 SET @workdays=1
 SET @agodays=1
 IF(isnull(@thisTime,'')<>'')
 BEGIN
  WHILE @workdays<@agoWorkDays
  BEGIN
  --获取是不是工作日
  SET @agoday=DATEADD(day,(0-@agodays),@thisTime)--获取某几天前的日期
  SELECT @isworkday=DATEPART(dw,@agoday)--获取某几天前的日期是一星期中的第几天,如果是1或7则不是工作日
   IF (@isworkday<>1 and @isworkday<>7)--如果不等于1也不等于7,说明是工作日
   BEGIN
    SELECT @workdays=(@workdays+1)--标志几个工作日的数字加1
   END
  SELECT @agodays=(@agodays+1)--循环次数加1,也就是再计算向前一天
  END
 END
  -- Return the result of the function
  RETURN @agoday
 
END

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值