Hvis du antager, at du kender forskydningen mellem UTC og den tidszone, dataene er lagret i, er det ret simpelt:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);
Bemærk, at det kan være negativt eller positivt, jeg aner ikke, hvilken side af Greenwich du er.
Dette bliver selvfølgelig mere kompliceret, hvis du er i en tidszone, der observerer sommertid; i dette tilfælde har du muligvis brug for en mere ekspansiv løsning, såsom at bruge en kalendertabel. Dette er særligt komplekst, hvis dine data for eksempel strækker sig tilbage, før George Bush ændrede de amerikanske sommertidsregler. Jeg har en artikel fra lang tid siden, som kan være nyttig ; en nyere serie er her:
- Håndter konvertering mellem tidszoner i SQL Server - del 1
- Håndter konvertering mellem tidszoner i SQL Server - del 2
- Håndter konvertering mellem tidszoner i SQL Server - del 3
Også hvis nogen af dine data falder i det vindue mellem kl. 12.00 og 02.00 på en dag for forår/fald tilbage, hvor jeg aldrig er sikker på, om det er rigtigt at ændre det, fordi det er overgangsdagen eller ikke ændres. det fordi det er før kl. 2.