SQL DATEADD函数删除周末
我需要在“2020-12-01”日期后再加上五天。但这里的情况是,在“2020-12-01”日期增加五天的同时,我们不应包括周六(2020-12-05)和周日(2020-12-06) 我尝试过在where条件下使用带有过滤器选项的DATEDIFF。。但我无法找到解决办法。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-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 |