sql - SQL 单一查询以获取给定输入日期的下 12 个日期
问题描述
我想要一个查询来获取给定日期的下 12 个日期(每月的第一天)。
例如,输入日期是 01/01/2019 (DD/MM/YYYY) 那么输出应该如下:
我尝试使用以下DATEADD
函数运行循环:
DECLARE @i INT
SET @i = 0
while(@i<12)
BEGIN
SELECT DATEADD(mm, @i, '01/01/2019');
SET @i = @i+1
END
这可行,但有没有一种方法可以通过单个查询获取所需的输出?
解决方案
SQL Server 解决方案
with cte(DateVal) as(
SELECT CONVERT(datetime,'2019/01/01') dt
union all
select DATEADD(day,1,dateval) from cte where DateVal<DATEADD(day,11,'2019/01/01') )
SELECT * FROM CTE
推荐阅读
- snakemake - 蛇制作中的模糊规则异常,两个分支的parms崩溃
- javascript - 当我作为扩展加载时,为什么我的 JavaScript 变量未定义?
- python - 如何切片数据帧并将其重新组合成一个新的数据帧
- postgresql - 从 SQL Server 使用插入到 OPENQUERY 时如何修复 Postgres 数字自动变为 6 个小数位
- python - 在上下文处理器中提高 PermissionDenied
- reactjs - 在 MUI 中,我们什么时候使用 Input 与 TextField 来构建表单?
- amazon-web-services - 在 aws lambda 中访问 cookie;SAM 模板和 sam local start-api
- curl - 如何从 Bitbucket repo 获取提交 sha 的流/列表
- ios - 显示弹出控制器时,如何让手势识别器在基本控制器上工作?
- node.js - 如何在 Mongoose 使用 Joi 更新“空”数据