Compartir a través de


CAMBIO DESPLAZAMIENTO (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

Devuelve un valor datetimeoffset que ha cambiado el ajuste de zona horaria almacenado por un nuevo ajuste de zona horaria especificado.

Para obtener información general sobre todos los tipos y funciones de datos de fecha y hora de Transact-SQL, consulte Tipos y funciones de datos de fecha y hora.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Argumentos

datetimeoffset_expression

Expresión que se puede resolver en un valor datetimeoffset(n).

timezoneoffset_expression

Expresión con el formato [+|-]TZH:TZM o un entero con signo (de minutos) que representa el desplazamiento de zona horaria y se supone que es compatible con el horario de verano y se ajusta.

Tipos de retorno

datetimeoffset con la precisión fraccionaria del argumento datetimeoffset_expression.

Comentarios

Use SWITCHOFFSET para seleccionar un valor datetimeoffset en un desplazamiento de zona horaria diferente del desplazamiento de zona horaria que se almacenó originalmente. SWITCHOFFSET no actualiza el valor de time_zone almacenado.

SWITCHOFFSET se puede usar para actualizar una columna datetimeoffset .

El uso SWITCHOFFSET con la función GETDATE() puede hacer que la consulta se ejecute lentamente. Esto se debe a que el optimizador de consultas no puede obtener estimaciones de cardinalidad precisas para el valor datetime. Para resolver este problema, use la OPTION (RECOMPILE) sugerencia de consulta para forzar al optimizador de consultas a volver a compilar un plan de consulta la próxima vez que se ejecute la misma consulta. A continuación, el optimizador tiene estimaciones de cardinalidad precisas y genera un plan de consulta más eficaz. Para obtener más información sobre la RECOMPILE sugerencia de consulta, consulte Sugerencias de consulta.

DECLARE @dt AS DATETIMEOFFSET = switchoffset(CONVERT (DATETIMEOFFSET, GETDATE()), '-04:00');

SELECT *
FROM t
WHERE c1 > @dt
OPTION (RECOMPILE);

Ejemplos

En el ejemplo siguiente se usa SWITCHOFFSET para mostrar un ajuste de zona horaria diferente del valor almacenado en la base de datos.

CREATE TABLE dbo.test (ColDatetimeoffset DATETIMEOFFSET);
GO

INSERT INTO dbo.test VALUES ('1998-09-20 7:45:50.71345 -5:00');
GO

SELECT SWITCHOFFSET (ColDatetimeoffset, '-08:00')
FROM dbo.test;
GO
--Returns: 1998-09-20 04:45:50.7134500 -08:00

SELECT ColDatetimeoffset
FROM dbo.test;
--Returns: 1998-09-20 07:45:50.7134500 -05:00