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