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

SWITCHOFFSET() Esempi in SQL Server

In SQL Server, SWITCHOFFSET() può essere utilizzata per restituire un datetimeoffset valore che viene modificato dall'offset di fuso orario memorizzato a un nuovo offset di fuso orario specificato.

Di seguito sono riportati esempi di come funziona questa funzione.

Sintassi

Innanzitutto, ecco come funziona la sintassi:

SWITCHOFFSET ( DATETIMEOFFSET, time_zone )

Dove DATETIMEOFFSET è un'espressione che può essere risolta in un datetimeoffset(n) valore e time_zone è una stringa di caratteri nel formato [+|-]TZH:TZM o un numero intero con segno (di minuti) che rappresenta l'offset del fuso orario e si presume che sia consapevole e regolato dell'ora legale.

Il risultato viene restituito come datetimeoffset con la precisione frazionaria del DATETIMEOFFSET argomento.

Esempio 1

Ecco un semplice esempio di utilizzo:

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

Risultato:

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

Esempio 2

Questo esempio utilizza un valore negativo:

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

Risultato:

Result
----------------------------------
2111-12-31 16:00:00.0000000 -08:00

Esempio 4

In questo esempio dichiariamo una variabile e le assegniamo una data utilizzando datetimeoffset tipo di dati. Quindi applichiamo SWITCHOFFSET() a quella data e confrontarla con la data originale.

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

Risultato:

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

Esempio 5

Qui facciamo la stessa cosa dell'esempio precedente, ma usiamo il SYSDATETIMEOFFSET() funzione per generare la data/ora corrente e l'offset.

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

Risultato:

Current Date                       +08:00
---------------------------------- ----------------------------------
2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00

Esempio 6

Questo esempio è lo stesso del precedente, tranne per il fatto che aggiungiamo un valore negativo.

SELECT 
    SYSDATETIMEOFFSET() AS 'Current Date',
    SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';

Risultato:

Current Date                       -08:00
---------------------------------- ----------------------------------
2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00

Esempio 7

Puoi anche fornire l'offset del fuso orario come numero intero anziché come stringa:

SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;

Risultato:

Result
----------------------------------
2111-12-31 21:00:00.0000000 -03:00