我只想获取所选日期之间月份的开始日期
前任 :
开始日期 = 2012 -05-01 结束日期 = 2013-04-01
我想要这样
日期 : 2012-05-01 2012-06-01 2012-07-01…… 2013-01-01…… 2012-05-01
我只想获取所选日期之间月份的开始日期
前任 :
开始日期 = 2012 -05-01 结束日期 = 2013-04-01
我想要这样
日期 : 2012-05-01 2012-06-01 2012-07-01…… 2013-01-01…… 2012-05-01
CTE 会成功的
Declare @beginDt SmallDatetime = '13 Jan 2012'
Declare @endDt SmallDatetime = '2 Apr 2013';
With MonthList(aMon)
As
(Select DateAdd(month, datediff(month, 0, @beginDt), 31)
Union All
Select DateAdd(month, 1, aMon) From MonthList
Where DateAdd(month, 1, aMon) < @endDt)
Select aMon from MonthList
首先,创建一个日历表。然后你可以写一个简单的查询:
select [Date]
from dbo.Calendar
where IsFirstDayOfMonth = 1 and [Date] between '20120501' and '20130401'
此查询比使用基于函数的解决方案更清晰,日历表也有许多其他用途。