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

Obtenir des dates à partir d'un numéro de semaine dans T-SQL

La réponse de Quassnoi fonctionne, mais vous laisse en quelque sorte sur le crochet pour nettoyer les dates si ce sont des dates au milieu de la journée (son début de semaine vous laisse un jour plus tôt que nécessaire si vous utilisez une heure au milieu du jour -- vous pouvez tester en utilisant GETDATE()).

J'ai déjà utilisé quelque chose comme ça :

SELECT 
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL), DATECOL)), 101),
   CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL) - 6, DATECOL)), 101)

Un avantage secondaire de cela est qu'en utilisant @@DATEFIRST, vous pouvez gérer les jours de début de semaine non standard (la valeur par défaut est le dimanche, mais avec SET @@DATEFIRST, vous pouvez modifier cela).

Il semble fou qu'une simple manipulation de date dans SQL Server doive être aussi obscure, mais voilà...