sql >> Base de Datos >  >> RDS >> Sqlserver

cómo convertir todas las columnas de fecha y hora en una base de datos express de sql server 2005 con datos a UTC

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í:

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.