Konvertieren von DATETIMEOFFSET in DateTime unter Beibehaltung des Offsets
In SQL Server 2008 führt die Konvertierung eines DATETIMEOFFSET-Felds in ein DATETIME-Feld normalerweise zum Verlust von Zeitinformation aufgrund des Offsets. Es gibt jedoch eine Möglichkeit, den Wert unter Beibehaltung des Offsets zu konvertieren und ihn effektiv in UTC umzuwandeln.
Der Schlüssel zu dieser Konvertierung liegt in der Verwendung der CONVERT-Funktion mit dem richtigen Stilargument. Das Argument style gibt an, wie die Konvertierung durchgeführt werden soll. Für diesen speziellen Zweck müssen wir Stil 1 verwenden:
SELECT CONVERT(datetime2, @createdon, 1)
Die obige Abfrage nimmt eine DATETIMEOFFSET-Variable (@createdon) und wandelt sie mithilfe von Stil 1 in einen DATETIME2-Wert um. Dieser Stil konvertiert den DATETIMEOFFSET-Wert in einen DATETIME2-Wert in UTC durch Subtrahieren des Offsets.
Betrachten Sie beispielsweise den folgenden DATETIMEOFFSET Wert:
2008-12-19 17:30:09.0000000 +11:00
Wenn wir diesen Wert mit Stil 1 konvertieren, erhalten wir:
2008-12-19 06:30:09.0000000
Dieses Ergebnis ist in UTC-Zeit angegeben, wodurch der Offset effektiv entfernt wird.
Beachten Sie, dass bei der Konvertierung von DATETIME2 in DATETIMEOFFSET mit Stil 1 der Offset einfach auf 00:00 gesetzt wird. Dies kann als schnelle Methode verwendet werden, um einen DATETIMEOFFSET-Wert mit einem Offset ungleich Null in einen DATETIMEOFFSET-Wert in UTC zu konvertieren:
SELECT convert(datetimeoffset,CONVERT(datetime2, @createdon, 1))
Das obige ist der detaillierte Inhalt vonWie konvertiere ich SQL Server 2008 DATETIMEOFFSET in DATETIME unter Beibehaltung des Offsets?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!