使用包含日期和日期参数之间的日期来填充临时表的最简单方法是什么?我只需要一个月的第一天的日期.
所以例如@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)