获取开始日期和结束日期之间的一个月的开始日期

时间:2013-04-09 13:47:52

标签: sql-server

我想只获取所选日期之间的月份开始日期

前:

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

2 个答案:

答案 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'

此查询比使用基于函数的解决方案更清晰,日历表也有许多其他用途。