sql >> Base de Datos >  >> RDS >> Sqlserver

Obtener fechas de un número de semana en T-SQL

La respuesta de Quassnoi funciona, pero te deja enganchado para limpiar las fechas si son fechas en el medio del día (su inicio de semana te deja un día antes de lo necesario si usas un tiempo en el medio del día; puede probar usando GETDATE()).

He usado algo como esto en el pasado:

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 beneficio adicional de esto es que al usar @@DATEFIRST puede manejar días de inicio de semana no estándar (el valor predeterminado es el domingo, pero con SET @@DATEFIRST puede cambiar esto).

Parece una locura que la simple manipulación de fechas en SQL Server tenga que ser tan arcana, pero ahí lo tienes...