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

Hinzufügen eines Zeitzonenoffsets zu einem datetime2-Wert in SQL Server (T-SQL)

In SQL Server das TODATETIMEOFFSET() Die Funktion wurde speziell entwickelt, um ein datetimeoffset zurückzugeben Wert von einem datetime2 Wert.

Angesichts der Tatsache, dass datetime2 Der Datentyp unterstützt keine Zeitzonen-Offsets und datetimeoffset muss den Offset enthalten, den TODATETIMEOFFSET() Mit der Funktion können Sie einen Zeitzonen-Offset angeben, der verwendet werden soll.

Dieser Artikel enthält einige Beispiele zur Veranschaulichung.

Grundlegende Verwendung

Hier ist ein Beispiel für die typische Verwendung von TODATETIMEOFFSET() Funktion.

DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];

Ergebnis (bei vertikaler Ausgabe):

datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00

In diesem Fall gebe ich das ursprüngliche datetime2 zurück -Wert und dem daraus resultierenden datetimeoffset Wert.

Das Ergebnis ist, dass das ursprüngliche Datum/die ursprüngliche Uhrzeit gleich ist, außer dass der angegebene Zeitzonen-Offset angehängt wurde.

Der Bereich ist +14 bis -14 (in Stunden). Der Ausdruck wird in Ortszeit für die angegebene Zeitzone interpretiert.

Geben Sie den Zeitzonenversatz in Minuten an

Alternativ können Sie den Zeitzonenoffset in Minuten angeben. Hier ist ein Beispiel.

DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
  @dt AS [datetime2],
  TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];

Ergebnis (bei vertikaler Ausgabe):

datetime2      | 2020-12-20 17:33:59.8900000
datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00

In diesem Fall habe ich +120 Minuten angegeben, was zwei Stunden entspricht. Das Ergebnis war also ein Zeitzonenversatz von +02:00 (dh plus zwei Stunden).

Beachten Sie außerdem, dass Sie den Zeitzonenoffset in Minuten als ganzzahligen Wert angeben. Wenn Sie sie dagegen in Stunden angeben, müssen Sie sie als Zeichenfolge angeben.

Beispiele dazu finden Sie unter Konvertieren eines Datums in eine andere Zeitzone.