Calculando la fecha UTC en SQL Server
Hace unos días me topé con algo interesante, cambiar la fecha ya establecida en los campos de una tabla a una estandarizada para varios paises. La solución simple fue utilizar la fecha UTC (GMT 0), pero ya en SQL Server las fechas estaban registradas con la hora local.
En SQL Server podemos obtener el tiempo actual UTC con la función GETUTCDATE(), utilizando esto a nuestro favor decidí crear un simple UDF para cambiar las fechas.
CREATE FUNCTION [dbo].[ConvertToUtc](@start datetime) RETURNS DATETIME AS BEGIN DECLARE @offset INTEGER SET @offset = DATEDIFF(HOUR, GETUTCDATE(), GETDATE()) RETURN DATEADD(HOUR, @offset, @start) END
Luego el proceso es simple, como ejemplo, transformando la fecha actual a UTC:
SELECT ConvertToUtc(CURRENT_TIMESTAMP)