sql – 最简单的方式来填充包含2个日期参数之间的日期的临时表

前端之家收集整理的这篇文章主要介绍了sql – 最简单的方式来填充包含2个日期参数之间的日期的临时表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用包含日期和日期参数之间的日期来填充临时表的最简单方法是什么?我只需要一个月的第一天的日期.

所以例如@StartDate =’2011-01-01’和@EndDate =’2011-08-01′

然后我希望这在表中返回

2011-01-01
2011-02-01
2011-03-01
2011-04-01
2011-05-01
2011-06-01
2011-07-01
2011-08-01

解决方法

即使@StartDate不是本月的第一个,这也是有效的.我假设如果不是本月初,你想从下个月的第一个开始.否则删除1:
;WITH cte AS (
SELECT CASE WHEN DATEPART(Day,@StartDate) = 1 THEN @StartDate 
            ELSE DATEADD(Month,DATEDIFF(Month,@StartDate)+1,0) END AS myDate
UNION ALL
SELECT DATEADD(Month,1,myDate)
FROM cte
WHERE DATEADD(Month,myDate) <=  @EndDate
)
SELECT myDate
FROM cte
OPTION (MAXRECURSION 0)

猜你在找的MsSQL相关文章