Ако приемем, че знаете отместването между UTC и часовата зона, в която се съхраняват данните, е доста просто:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);
Имайте предвид, че може да е отрицателно или положително, нямам представа от коя страна на Гринуич сте.
Разбира се, това става по-сложно, ако сте в часова зона, която спазва лятното часово време; в този случай може да се нуждаете от по-широко решение, като например използване на календарна таблица. Това е особено сложно, ако вашите данни се простират преди Джордж Буш да промени американските правила за лятно часово време, например. Имам статия от преди много време, която може да бъде полезна ; по-нова серия е тук:
- Управление на преобразуването между часови зони в SQL Server - част 1
- Управлявайте преобразуването между часови зони в SQL Server - част 2
- Управлявайте преобразуването между часови зони в SQL Server - част 3
Също така, ако някои от вашите данни попаднат в този прозорец между 00:00 ч. и 2:00 ч. сутринта на пролетен ден напред/назад, когато никога не съм сигурен дали е правилно да ги променя, защото това е денят за смяна, или да не променям защото е преди 2 сутринта.