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

SYSDATETIMEOFFSET() Esempi in SQL Server (T-SQL)

In SQL Server, transact-sql SYSDATETIMEOFFSET() la funzione restituisce un datetimeoffset(7) valore che contiene la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. Questo valore include l'offset del fuso orario.

Esempi di utilizzo di seguito.

Sintassi

La sintassi è questa:

SYSDATETIMEOFFSET ( )

Quindi chiami semplicemente la funzione senza argomenti.

Esempio

Ecco un esempio di base:

SELECT SYSDATETIMEOFFSET() AS Result;

Risultato:

Result
----------------------------------
2018-06-17 09:55:27.3221853 +10:00

Estrazione dell'offset di fuso orario

Puoi usare il DATEPART() funzione per restituire l'offset del fuso orario. Questa funzione restituisce un numero intero che rappresenta l'offset del fuso orario in minuti.

Esempio:

SELECT 
    SYSDATETIMEOFFSET() AS 'Date/time',
    DATEPART(TZoffset, SYSDATETIMEOFFSET()) AS 'TZ Offset';

Risultato:

Date/time                             TZ Offset
----------------------------------    -----------
2018-06-17 10:04:23.2316409 +10:00    600

È inoltre possibile utilizzare la funzione FORMAT() per restituire l'offset del fuso orario come stringa. In particolare, puoi utilizzare il z , zz , e/o zzz argomenti per restituirlo nel formato richiesto.

Esempio:

SELECT 
    SYSDATETIMEOFFSET() AS 'Date/time',
    FORMAT(SYSDATETIMEOFFSET(), 'zz') AS 'zz',
    FORMAT(SYSDATETIMEOFFSET(), 'zzz') AS 'zzz';

Risultato:

Date/time                             zz                zzz
----------------------------------    --------------    --------------
2018-06-17 10:27:33.7314840 +10:00    +10               +10:00

Conversione del valore di ritorno

Puoi anche usare funzioni come CONVERT() per convertire il valore restituito in un altro tipo di dati. Ecco un esempio in cui lo converto in una data valore e un tempo valore:

SELECT 
    CONVERT (date, SYSDATETIMEOFFSET()) AS 'Date',
    CONVERT (time, SYSDATETIMEOFFSET()) AS 'Time';

Risultato:

Date          Time
----------    ----------------
2018-06-17    10:08:29.6377947

Ovviamente, una volta che lo facciamo, perdiamo l'offset del fuso orario.

Vedi anche TODATETIMEOFFSET() che ti consente di ottenere un datetimeoffset valore da un datetime2 espressione e SWITCHOFFSET() che ti consente di modificare un fuso orario.