我想只获取所选日期之间的月份开始日期
前:
start date = 2012 -05-01 end date = 2013-04-01
我想要这样
Dates : 2012 -05-01 2012 -06-01 2012 -07-01 ..... 2013 -01-01 ..... 2012 -05-01
答案 0 :(得分:1)
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
答案 1 :(得分:0)
首先,create a calendar table。然后你可以写一个简单的查询:
select [Date]
from dbo.Calendar
where IsFirstDayOfMonth = 1 and [Date] between '20120501' and '20130401'
此查询比使用基于函数的解决方案更清晰,日历表也有许多其他用途。