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

TODATETIMEOFFSET() Ejemplos en SQL Server

En SQL Server, puede usar TODATETIMEOFFSET() función para devolver un datetimeoffset valor que se traduce de datetime2 expresión. Acepta dos argumentos; la fecha y la compensación que le gustaría aplicar a esa fecha.

A continuación se muestran ejemplos de uso.

Sintaxis

La sintaxis de TODATETIMEOFFSET() va así:

TODATETIMEOFFSET ( expression , time_zone )

Donde expression es una expresión que se resuelve en datetime2 valor y time_zone es la zona horaria que le gustaría aplicar a esa expresión (fecha).

Puede proporcionar la zona horaria en minutos u horas. Si lo proporciona en minutos, use un número entero (por ejemplo, -120 ), de lo contrario, para proporcionarlo en horas, use una cadena (por ejemplo, '+04.00' ). El rango de la zona horaria es de +14 a -14 (horas).

Además, la fecha que proporciona se interpreta en hora local para la zona horaria especificada.

Ejemplo 1

He aquí un ejemplo básico de uso:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;

Resultado:

Result
----------------------------------
2112-01-01 00:00:00.0000000 +08:00

Ejemplo 2:valor negativo

Esto es lo mismo que el ejemplo anterior, excepto que en su lugar uso un valor negativo:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;

Resultado:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -08:00

Ejemplo 3:uso de una variable datetime2

En este ejemplo, configuro explícitamente una variable con datetime2 valor, luego aplique TODATETIMEOFFSET() a ese valor, y compare los valores:

DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Resultado:

Original Date               +08:00
--------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00

Como podemos ver con este ejemplo (y los anteriores), el valor de la fecha original no tiene ninguna fecha y hora información de compensación (porque es un datetime2 value), pero una vez que lo ejecutamos a través de TODATETIMEOFFSET() función, terminamos con un datetimeoffset tipo de datos.

Ejemplo 4:uso de una variable datetimeoffset

Esto es similar al ejemplo anterior, excepto que la fecha original se establece como datetimeoffset valor:

DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00';
SELECT 
    @date AS 'Original Date',
    TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';

Resultado:

Original Date                      +08:00
---------------------------------- ----------------------------------
2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00

Ejemplo 5:uso de la fecha/hora actual

En este ejemplo, paso el SYSDATETIMEOFFSET() funcionan como la expresión de fecha. Esta función genera la fecha/hora actual de la computadora que está ejecutando la instancia de SQL Server:

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';

Resultado:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00

Ejemplo 6:proporcionar la diferencia de zona horaria como un número entero

Como se mencionó, también puede proporcionar el desplazamiento de la zona horaria como un número entero en lugar de una cadena:

SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;

Resultado:

Result
----------------------------------
2112-01-01 00:00:00.0000000 -03:00