sql >> Base de Datos >  >> RDS >> Sqlserver

SWITCHOFFSET() Ejemplos en SQL Server

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