En SQL Server, el SWITCHOFFSET()
La función se puede usar para devolver un datetimeoffset valor que se cambia del desplazamiento de zona horaria almacenado a un nuevo desplazamiento de zona horaria especificado.
A continuación se muestran ejemplos de cómo funciona esta función.
Sintaxis
Primero, así es como funciona la sintaxis:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Donde DATETIMEOFFSET
es una expresión que se puede resolver en datetimeoffset(n) valor y time_zone
es una cadena de caracteres en el formato [+|-]TZH:TZM o un número entero con signo (de minutos) que representa el desplazamiento de la zona horaria, y se supone que es compatible con el horario de verano y ajustado.
El resultado se devuelve como datetimeoffset con la precisión fraccionaria de DATETIMEOFFSET
argumento.
Ejemplo 1
He aquí un ejemplo básico de uso:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Resultado:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Ejemplo 2
Este ejemplo usa un valor negativo:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Resultado:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Ejemplo 4
En este ejemplo declaramos una variable y le asignamos una fecha usando el datetimeoffset tipo de datos. Luego aplicamos SWITCHOFFSET()
a esa fecha y compararla con la fecha original.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Resultado:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Ejemplo 5
Aquí hacemos lo mismo que en el ejemplo anterior, pero usamos el SYSDATETIMEOFFSET()
función para generar la fecha/hora actual y el desplazamiento.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Resultado:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Ejemplo 6
Este ejemplo es el mismo que el anterior, excepto que agregamos un valor negativo.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Resultado:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Ejemplo 7
También puede proporcionar el desplazamiento de la zona horaria como un número entero en lugar de una cadena:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Resultado:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00