Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

como obter as datas de início e término de todas as semanas entre duas datas no servidor SQL?


Você pode usar um CTE recursivo para gerar a lista de datas:
;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

Consulte SQL Fiddle com demonstração.

Então você pode juntar isso à sua mesa, para retornar os detalhes adicionais.