Suponiendo que conoce la diferencia entre UTC y la zona horaria en la que se almacenan los datos, es bastante simple:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);
Tenga en cuenta que puede ser negativo o positivo, no tengo idea de qué lado de Greenwich está.
Por supuesto, esto se vuelve más complicado si se encuentra en una zona horaria que observa el horario de verano; en este caso, es posible que necesite una solución más amplia, como usar una tabla de calendario. Esto es particularmente complejo si sus datos se remontan a antes de que George Bush cambiara las reglas del horario de verano estadounidense, por ejemplo. Tengo un artículo de hace mucho tiempo que puede ser útil ; una serie más reciente está aquí:
- Manejar la conversión entre zonas horarias en SQL Server - parte 1
- Manejar la conversión entre zonas horarias en SQL Server - parte 2
- Manejar la conversión entre zonas horarias en SQL Server - parte 3
Además, si alguno de sus datos cae en esa ventana entre las 12:00 a. m. y las 2:00 a. m. en un día de avance/retroceso de primavera, donde nunca estoy seguro de si es correcto cambiarlo porque es el día de cambio o no cambiar porque es antes de las 2 AM.