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

Obter datas de um número de semana em T-SQL


A resposta de Quassnoi funciona, mas deixa você no gancho para limpar as datas se forem datas no meio do dia (o início da semana dele deixa você um dia mais cedo do que o necessário se você usar um horário no meio do dia -- você pode testar usando GETDATE()).

Eu usei algo assim no passado:
SELECT 
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL), DATECOL)), 101),
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL) - 6, DATECOL)), 101)

Um benefício colateral disso é que, usando @@DATEFIRST, você pode lidar com dias de início de semana fora do padrão (o padrão é domingo, mas com SET @@DATEFIRST você pode alterar isso).

Parece loucura que a simples manipulação de datas no SQL Server tenha que ser tão misteriosa, mas lá vai...