Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

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

In SQL Server transact-sql SYSDATETIMEOFFSET() Funktion gibt ein datetimeoffset(7) zurück -Wert, der das Datum und die Uhrzeit des Computers enthält, auf dem die Instanz von SQL Server ausgeführt wird. Dieser Wert enthält den Zeitzonen-Offset.

Anwendungsbeispiele unten.

Syntax

Die Syntax lautet wie folgt:

SYSDATETIMEOFFSET ( )

Also rufen Sie die Funktion einfach ohne Argumente auf.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT SYSDATETIMEOFFSET() AS Result;

Ergebnis:

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

Extrahieren des Zeitzonen-Offsets

Sie können den DATEPART() verwenden -Funktion, um den Zeitzonen-Offset zurückzugeben. Diese Funktion gibt eine Ganzzahl zurück, die den Zeitzonenoffset in Minuten darstellt.

Beispiel:

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

Ergebnis:

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

Sie können auch die Funktion FORMAT() verwenden, um den Zeitzonenoffset als Zeichenfolge zurückzugeben. Insbesondere können Sie das z verwenden , zz , und/oder zzz Argumente, um es im erforderlichen Format zurückzugeben.

Beispiel:

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

Ergebnis:

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

Konvertierung des Rückgabewerts

Sie können auch Funktionen wie CONVERT() verwenden um den Rückgabewert in einen anderen Datentyp umzuwandeln. Hier ist ein Beispiel, wo ich es in ein Datum umwandle Wert und eine Zeit Wert:

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

Ergebnis:

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

Sobald wir das tun, verlieren wir natürlich den Zeitzonen-Offset.

Siehe auch TODATETIMEOFFSET() wodurch Sie ein datetimeoffset erhalten können Wert von einem datetime2 Ausdruck und SWITCHOFFSET() wodurch Sie einen Zeitzonen-Offset ändern können.