2 sql sql-server sql-server-2008
我有两个日期,例如08/08/2013和11/11/2013,我需要从8月到11月的每个月的最后一个日期在一个表中,以便我可以遍历表格来单独选择这些日期.
我知道如何选择任何月份的最后日期,但我被一个日期范围所困扰.
亲切的帮助,将受到高度赞赏.
注意:我使用的是Sql 2008,日期范围可能是1个月,2个月或6个月或一年或者最大值.
您可以使用CTE获取定义范围内的所有月中的所有最后几天
Declare @Start datetime
Declare @End datetime
Select @Start = '20130808'
Select @End = '20131111'
;With CTE as
(
Select @Start as Date,Case When DatePart(mm,@Start)<>DatePart(mm,@Start+1) then 1 else 0 end as [Last]
UNION ALL
Select Date+1,Case When DatePart(mm,Date+1)<>DatePart(mm,Date+2) then 1 else 0 end from CTE
Where Date<@End
)
Select * from CTE
where [Last]=1 OPTION ( MAXRECURSION 0 )
Run Code Online (Sandbox Code Playgroud)