sql - SQL DATEADD 函数删除周结束
问题描述
我需要在“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
DB Fiddle 上的演示(SQL Server 2016):
| 资源 | | :--------- | | 2020-12-11 |
推荐阅读
- c - 使用 isdigit 后如何将字符串打印到数组中?
- java - 无法使用 Java 获取 HDFS 中的文件夹计数
- reactjs - React js 和 Mongodb Web 应用程序出错?
- sqlite - 在 PowerShell 脚本中应用 Export-Csv 命令时没有结果
- android - 使用服务器和客户端证书以及私钥创建 SSLContext
- java - com.netflix.hystrix.contrib.javanica.annotation 包不存在
- dart - 飞镖中的转发包成员
- facebook-graph-api - facebook graph api 发布图片
- google-apps-script - 通过脚本在 Google Sheet 中设置单元格值的最佳方法
- html - node_modules/@angular/flex-layout/extended/typings/style/style.d.ts 中的错误