Zakładając, że znasz przesunięcie między czasem UTC a strefą czasową, w której przechowywane są dane, jest to całkiem proste:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);
Zauważ, że może to być negatywne lub pozytywne, nie mam pojęcia, po której stronie Greenwich jesteś.
Oczywiście staje się to bardziej skomplikowane, jeśli jesteś w strefie czasowej, która przestrzega czasu letniego; w takim przypadku możesz potrzebować bardziej rozbudowanego rozwiązania, takiego jak użycie tabeli kalendarza. Jest to szczególnie skomplikowane, jeśli Twoje dane sięgają wstecz, na przykład, zanim George Bush zmienił amerykańskie zasady czasu letniego. Mam artykuł sprzed wieków, który może być przydatny ; nowsza seria jest tutaj:
- Obsługa konwersji między strefami czasowymi w SQL Server - część 1
- Obsługa konwersji między strefami czasowymi w SQL Server - część 2
- Obsługa konwersji między strefami czasowymi w SQL Server - część 3
Również jeśli którekolwiek z twoich danych wypadną w tym oknie między godziną 00:00 a 02:00 w dniu wiosenno-jesiennym, kiedy nigdy nie jestem pewien, czy warto je zmienić, ponieważ jest to dzień zmiany, czy nie. bo jest przed 2 w nocy.