创建日期列表,相隔一个月,从当前日期开始

rus*_*sds 3 sql t-sql sql-server

我正在寻找一个简单的选择查询(不使用表格)来返回一个相隔1个月的日期列表.输出应该是这样的东西,(假设GetDate()='2011-07-05 11:59:000',我想在NOW()和NOW()+ 4个月之间

Date
2011-07-05 11:59:000
2011-08-05 11:59:000
2011-09-05 11:59:000
2011-10-05 11:59:000
2011-11-05 11:59:000
Run Code Online (Sandbox Code Playgroud)

杀死我的部分是计算明年,例如,如果我在11月运行此查询,则应将这些月份列为11,12,1,2.谢谢!

Ram*_*Ram 7

您可以使用递归CTE,如果要求未修复如下,则无需将UNION串起来:

 ;with MonthlyCalendar as (
 select cast(getdate() as datetime) as dt
 union all
 select dateadd(mm, 1, dt)
 from MonthlyCalendar
) 
select top 5 dt as [Date] from MonthlyCalendar
option (maxrecursion 0) 
Run Code Online (Sandbox Code Playgroud)

在性能方面,你需要只有4个月的时间,UNION远远优于递归选项.