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

comment obtenir les dates de début et de fin de toutes les semaines entre deux dates dans le serveur SQL ?

Vous pouvez utiliser un CTE récursif pour générer la liste des dates :

;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

Voir SQL Fiddle avec démo.

Ensuite, vous pouvez joindre ceci à votre table, pour renvoyer les détails supplémentaires.