Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottieni le date da un numero di settimana in T-SQL

La risposta di Quassnoi funziona, ma ti lascia in qualche modo impegnato a ripulire le date se sono date a metà giornata (il suo inizio settimana ti lascia un giorno prima del necessario se usi un tempo nel mezzo del giorno -- puoi testare usando GETDATE()).

Ho usato qualcosa del genere in passato:

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 vantaggio collaterale di questo è che usando @@DATEFIRST puoi gestire giorni di inizio settimana non standard (l'impostazione predefinita è domenica, ma con SET @@DATEFIRST puoi cambiarlo).

Sembra pazzesco che la semplice manipolazione della data in SQL Server debba essere così arcana, ma ecco qua...