首页 > 解决方案 > 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

这可行,但有没有一种方法可以通过单个查询获取所需的输出?

标签: sqlsql-serverdateadd

解决方案


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

推荐阅读