Compartir a través de


SWITCHOFFSET (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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

Para una introducción acerca de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Funciones de fecha y hora (Transact-SQL).

Convenciones de sintaxis de Transact-SQL

Sintaxis

SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   

Argumentos

datetimeoffset_expression
Es una expresión que se puede resolver como un valor datetimeoffset(n).

timezoneoffset_expression
Es una expresión en formato [+|-]TZH:TZM o un entero con signo (de minutos) que representa el ajuste de zona horaria. Se supone que reconoce el horario de verano y que está ajustado para este.

Tipo de valor devuelto

datetimeoffset con la precisión fraccionaria del argumento datetimeoffset_expression.

Comentarios

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

SWITCHOFFSET se puede usar para actualizar una columna datetimeoffset.

Si se usa SWITCHOFFSET con la función GETDATE(), es posible 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 sugerencia de consulta OPTION (RECOMPILE) para obligar al optimizador de consultas a que vuelva a compilar un plan de consulta la próxima vez que se ejecute la misma consulta. De este modo, el optimizador tendrá estimaciones de cardinalidad precisas y generará un plan de consulta más eficaz. Para obtener más información sobre la sugerencia de consulta RECOMPILE, consulte Sugerencias de consulta (Transact-SQL).

DECLARE @dt 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  

Vea también

CAST y CONVERT (Transact-SQL)
AT TIME ZONE (Transact-SQL)