Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

TODATETIMEOFFSET() Esempi in SQL Server

In SQL Server puoi utilizzare TODATETIMEOFFSET() funzione per restituire un datetimeoffset valore tradotto da un datetime2 espressione. Accetta due argomenti; la data e l'offset che desideri applicare a tale data.

Di seguito sono riportati esempi di utilizzo.

Sintassi

La sintassi di TODATETIMEOFFSET() va così:

TODATETIMEOFFSET ( expression , time_zone )

Dove expression è un'espressione che si risolve in un datetime2 valore e time_zone è il fuso orario che desideri applicare a tale espressione (data).

È possibile fornire il fuso orario in minuti o ore. Se lo fornisci in pochi minuti, utilizza un numero intero (ad es. -120 ), altrimenti per fornirlo in ore, usa una stringa (es. '+04.00' ). L'intervallo per il fuso orario è compreso tra +14 e -14 (ore).

Inoltre, la data che fornisci viene interpretata nell'ora locale per il fuso orario specificato.

Esempio 1

Ecco un semplice esempio di utilizzo:

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

Risultato:

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

Esempio 2 – Valore negativo

Questo è lo stesso dell'esempio precedente, tranne per il fatto che utilizzo invece un valore negativo:

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

Risultato:

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

Esempio 3:utilizzo di una variabile datetime2

In questo esempio, ho impostato esplicitamente una variabile con datetime2 valore, quindi applica TODATETIMEOFFSET() a quel valore e confrontare i valori:

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

Risultato:

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

Come possiamo vedere con questo esempio (e i precedenti), il valore della data originale non ha alcun datetime informazioni sull'offset (perché è un datetime2 value), ma una volta eseguito il file TODATETIMEOFFSET() funzione, finiamo con un datetimeoffset tipo di dati.

Esempio 4:utilizzo di una variabile datetimeoffset

È simile all'esempio precedente, tranne per il fatto che la data originale è impostata come datetimeoffset valore:

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

Risultato:

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

Esempio 5:utilizzo della data/ora corrente

In questo esempio, passo il SYSDATETIMEOFFSET() funzione come espressione di data. Questa funzione genera la data/ora corrente del computer che esegue l'istanza di SQL Server:

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

Risultato:

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

Esempio 6:fornire l'offset del fuso orario come numero intero

Come accennato, puoi anche fornire l'offset del fuso orario come numero intero anziché come stringa:

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

Risultato:

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