sql >> Database teknologi >  >> RDS >> Sqlserver

tsql:Sådan henter du den sidste dato i hver måned mellem et givet datointerval

Du kan bruge CTE for at få alle månedens sidste dage inden for det definerede interval

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 )


  1. kommasepareret liste som en enkelt streng, T-SQL

  2. mysql kan ikke indsætte post med usigneret primærnøgle som nul

  3. Hvordan man skriver en MySQL-forespørgsel, der returnerer en midlertidig kolonne, der indeholder flag for, hvorvidt et element relateret til den række findes i en anden tabel eller ej

  4. SQL Server 2016:Opret en tabel