SQL DATEADD函数删除周末

SQL DATEADD函数删除周末,sql,sql-server,datetime,sql-server-2016,recursive-query,Sql,Sql Server,Datetime,Sql Server 2016,Recursive Query,我需要在“2020-12-01”日期后再加上五天。但这里的情况是,在“2020-12-01”日期增加五天的同时,我们不应包括周六(2020-12-05)和周日(2020-12-06) 我尝试过在where条件下使用带有过滤器选项的DATEDIFF。。但我无法找到解决办法。 谁能帮我把它做完吗。(预期输出:2020-12-07)使用蛮力方法可能更简单,方法是枚举子查询中的天数,仅对非周末天数递减coutner: declare @dt date = '20201202'; declare @no_

我需要在“2020-12-01”日期后再加上五天。但这里的情况是,在“2020-12-01”日期增加五天的同时,我们不应包括周六(2020-12-05)和周日(2020-12-06)

我尝试过在where条件下使用带有过滤器选项的DATEDIFF。。但我无法找到解决办法。
谁能帮我把它做完吗。(预期输出:2020-12-07)

使用蛮力方法可能更简单,方法是枚举子查询中的天数,仅对非周末天数递减coutner:

declare @dt date = '20201202';
declare @no_days int = 5;

with cte as (
    select @dt as dt, @no_days as no_days
    union all
    select dateadd(day, 1, dt), 
        case when datename(weekday, dt) in ('Saturday', 'Sunday') 
            then no_days
            else no_days - 1
        end
    from cte
    where no_days > 1
)
select max(dt) as res from cte
(SQL Server 2016):

|res| | :--------- | | 2020-12-11 | 提示:
(@@DateFirst+DatePart(weekday,SampleDate)-1)%7+1
将始终返回一个从
1
7
的整数,其中
1
对应于周日,而不管
DateFirst
Language
的设置如何。 | res | | :--------- | | 2020-12-11 |