Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie bekomme ich die Start- und Enddaten aller Wochen zwischen zwei Daten in SQL Server?

Sie können einen rekursiven CTE verwenden, um die Datumsliste zu generieren:

;with cte as
(
  select @sDate StartDate, 
    DATEADD(wk, DATEDIFF(wk, 0, @sDate), 6) EndDate
  union all
  select dateadd(ww, 1, StartDate),
    dateadd(ww, 1, EndDate)
  from cte
  where dateadd(ww, 1, StartDate)<=  @eDate
)
select *
from cte

Siehe SQL Fiddle mit Demo.

Dann können Sie dies zu Ihrem Tisch hinzufügen, um die zusätzlichen Details zurückzugeben.