In SQL Server der SWITCHOFFSET()
-Funktion kann verwendet werden, um einen datetimeoffset zurückzugeben Wert, der vom gespeicherten Zeitzonen-Offset in einen angegebenen neuen Zeitzonen-Offset geändert wird.
Nachfolgend finden Sie Beispiele dafür, wie diese Funktion funktioniert.
Syntax
Zunächst einmal die folgende Syntax:
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Wobei DATETIMEOFFSET
ist ein Ausdruck, der in ein datetimeoffset(n) aufgelöst werden kann Wert und time_zone
ist eine Zeichenfolge im Format [+|-]TZH:TZM oder eine vorzeichenbehaftete Ganzzahl (in Minuten), die den Zeitzonenoffset darstellt und von der angenommen wird, dass sie die Sommerzeit berücksichtigt und angepasst wird.
Das Ergebnis wird als datetimeoffset zurückgegeben mit der gebrochenen Genauigkeit von DATETIMEOFFSET
Argument.
Beispiel 1
Hier ist ein einfaches Verwendungsbeispiel:
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
Ergebnis:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
Beispiel 2
Dieses Beispiel verwendet einen negativen Wert:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
Ergebnis:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
Beispiel 4
In diesem Beispiel deklarieren wir eine Variable und weisen ihr mit dem datetimeoffset ein Datum zu Datentyp. Dann wenden wir SWITCHOFFSET()
an bis zu diesem Datum und vergleichen Sie es mit dem ursprünglichen Datum.
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
Ergebnis:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
Beispiel 5
Hier machen wir dasselbe wie im vorherigen Beispiel, aber wir verwenden SYSDATETIMEOFFSET()
Funktion zum Generieren des aktuellen Datums/der aktuellen Uhrzeit und des Offsets.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
Ergebnis:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
Beispiel 6
Dieses Beispiel ist dasselbe wie das vorherige, außer dass wir einen negativen Wert hinzufügen.
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
Ergebnis:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
Beispiel 7
Sie können den Zeitzonenoffset auch als Ganzzahl anstelle einer Zeichenfolge angeben:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
Ergebnis:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00