sql >> Databasteknik >  >> RDS >> Sqlserver

hur man konverterar alla datetime-kolumner i en sql server 2005 express databas med data till UTC

Förutsatt att du känner till förskjutningen mellan UTC och tidszonen som data lagras i, är det ganska enkelt:

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

Observera att det kan vara negativt eller positivt, jag har ingen aning om vilken sida av Greenwich du är.

Naturligtvis blir detta mer komplicerat om du befinner dig i en tidszon som observerar sommartid; i det här fallet kan du behöva en mer expansiv lösning som att använda en kalendertabell. Detta är särskilt komplicerat om din data sträcker sig tillbaka innan George Bush ändrade de amerikanska sommarreglerna, till exempel. Jag har en artikel från länge sedan som kan vara användbar ; en nyare serie är här:

Också om någon av dina data hamnar i det fönstret mellan 12:00 och 02:00 på en vår framåt/bakåt-dag, där jag aldrig är säker på om det är rätt att ändra det eftersom det är övergångsdagen eller att inte ändra det eftersom det är före 02.00.




  1. SQL-fråga för att hitta ett kolumnnamn i hela databasen

  2. i mysql, på delete cascade fungerar inte

  3. Skriver till MySQL-databas med pandor med SQLAlchemy, to_sql

  4. När DISTINCT <> GROUP BY