-1

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

前任 :

开始日期 = 2012 -05-01
结束日期 = 2013-04-01

我想要这样

   日期 :
   2012-05-01
   2012-06-01
   2012-07-01……
   2013-01-01……
   2012-05-01
4

2 回答 2

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
于 2013-04-09T14:02:05.133 回答
0

首先,创建一个日历表。然后你可以写一个简单的查询:

select [Date]
from dbo.Calendar
where IsFirstDayOfMonth = 1 and [Date] between '20120501' and '20130401'

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

于 2013-04-09T15:54:48.217 回答