我有两个日期,例如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 )