In SQL Server können Sie TODATETIMEOFFSET()
verwenden Funktion, um ein datetimeoffset zurückzugeben Wert, der aus einem datetime2 übersetzt wird Ausdruck. Es akzeptiert zwei Argumente; das Datum und den Offset, den Sie auf dieses Datum anwenden möchten.
Nachfolgend finden Sie Anwendungsbeispiele.
Syntax
Die Syntax von TODATETIMEOFFSET()
geht so:
TODATETIMEOFFSET ( expression , time_zone )
Wobei expression
ist ein Ausdruck, der zu datetime2 aufgelöst wird Wert und time_zone
ist die Zeitzone, die Sie auf diesen Ausdruck anwenden möchten (Datum).
Sie können die Zeitzone in Minuten oder Stunden angeben. Wenn Sie es in Minuten angeben, verwenden Sie eine Ganzzahl (z. B. -120
), um sie andernfalls in Stunden anzugeben, verwenden Sie eine Zeichenfolge (z. B. '+04.00'
). Der Bereich für die Zeitzone ist +14 bis -14 (Stunden).
Außerdem wird das von Ihnen angegebene Datum in Ortszeit für die angegebene Zeitzone interpretiert.
Beispiel 1
Hier ist ein einfaches Verwendungsbeispiel:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '+08:00' ) AS Result;
Ergebnis:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 +08:00
Beispiel 2 – Negativer Wert
Dies ist dasselbe wie im vorherigen Beispiel, außer dass ich stattdessen einen negativen Wert verwende:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', '-08:00' ) AS Result;
Ergebnis:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -08:00
Beispiel 3 – Verwendung einer datetime2-Variablen
In diesem Beispiel setze ich explizit eine Variable mit einem datetime2 Wert, und wenden Sie dann TODATETIMEOFFSET()
an mit diesem Wert und vergleichen Sie die Werte:
DECLARE @date datetime2 = '2112-01-01 00:00:00.0000000'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Ergebnis:
Original Date +08:00 --------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 2112-01-01 00:00:00.0000000 +08:00
Wie wir in diesem Beispiel (und den vorherigen) sehen können, hat der ursprüngliche Datumswert kein datetime Offset-Informationen (weil es ein datetime2 ist Wert), aber sobald wir es durch TODATETIMEOFFSET()
laufen lassen -Funktion erhalten wir am Ende ein datetimeoffset Datentyp.
Beispiel 4 – Verwendung einer datetimeoffset-Variablen
Dies ähnelt dem vorherigen Beispiel, außer dass das ursprüngliche Datum als datetimeoffset festgelegt wird Wert:
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', TODATETIMEOFFSET( @date, '+08:00' ) AS '+08:00';
Ergebnis:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 00:00:00.0000000 +08:00
Beispiel 5 – Verwenden des aktuellen Datums/der aktuellen Uhrzeit
In diesem Beispiel übergebe ich den SYSDATETIMEOFFSET()
Funktion als Datumsausdruck. Diese Funktion generiert das aktuelle Datum/die aktuelle Uhrzeit des Computers, auf dem die SQL Server-Instanz ausgeführt wird:
SELECT SYSDATETIMEOFFSET() AS 'Current Date', TODATETIMEOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Ergebnis:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-06 08:50:57.8382284 +10:00 2018-06-06 08:50:57.8382284 +08:00
Beispiel 6 – Angabe des Zeitzonen-Offsets als Ganzzahl
Wie bereits erwähnt, können Sie den Zeitzonenoffset auch als Integer statt als String angeben:
SELECT TODATETIMEOFFSET( '2112-01-01 00:00:00', -180 ) AS Result;
Ergebnis:
Result ---------------------------------- 2112-01-01 00:00:00.0000000 -03:00