SWITCHOFFSET (Transact-SQL)
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Instancia administrada
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 )
Nota:
Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.
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