Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

tsql :Comment récupérer la dernière date de chaque mois entre une plage de dates donnée

Vous pouvez utiliser CTE pour obtenir tous les derniers jours du mois dans la plage définie

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 )