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

So konvertieren Sie alle datetime-Spalten in einer SQL Server 2005 Express-Datenbank mit Daten in UTC

Angenommen, Sie kennen den Offset zwischen UTC und der Zeitzone, in der die Daten gespeichert sind, ist es ziemlich einfach:

DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);

Beachten Sie, dass dies negativ oder positiv sein kann, ich habe keine Ahnung, auf welcher Seite von Greenwich Sie sich befinden.

Dies wird natürlich komplizierter, wenn Sie sich in einer Zeitzone befinden, in der Sommerzeit gilt; In diesem Fall benötigen Sie möglicherweise eine umfangreichere Lösung, z. B. die Verwendung einer Kalendertabelle. Dies ist besonders komplex, wenn Ihre Daten zurückreichen, bevor beispielsweise George Bush die amerikanischen DST-Regeln geändert hat. Ich habe ein Artikel von vor langer Zeit, der nützlich sein könnte ; eine neuere Serie ist hier:

Auch wenn irgendwelche Ihrer Daten in dieses Fenster zwischen 00:00 Uhr und 02:00 Uhr an einem Spring-Forward/Fall-Back-Tag fallen, an dem ich nie sicher bin, ob es richtig ist, sie zu ändern, weil es der Umstellungstag ist oder nicht weil es vor 2 Uhr morgens ist.