Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abrufen von Daten aus einer Wochennummer in T-SQL

Quassnois Antwort funktioniert, aber Sie bleiben irgendwie am Haken, um die Daten zu bereinigen, wenn es sich um Daten in der Mitte des Tages handelt (sein Wochenstart lässt Sie einen Tag früher als nötig, wenn Sie eine Zeit in der Mitte verwenden des Tages -- Sie können dies mit GETDATE() testen).

Ich habe in der Vergangenheit so etwas verwendet:

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

Ein Nebenvorteil davon ist, dass Sie durch die Verwendung von @@DATEFIRST nicht standardmäßige Wochenanfangstage behandeln können (der Standard ist Sonntag, aber mit SET @@DATEFIRST können Sie dies ändern).

Es scheint verrückt, dass die einfache Datumsmanipulation in SQL Server so geheimnisvoll sein muss, aber los geht's ...