SWITCHOFFSET (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt einen datetimeoffset-Wert zurück, der von einem gespeicherten Zeitzonenoffset in einen angegebenen neuen Zeitzonenoffset geändert wurde.
Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen für Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).
Transact-SQL-Syntaxkonventionen
Syntax
SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )
Argumente
datetimeoffset_expression
Ein Ausdruck, der in einen datetimeoffset(n)-Wert aufgelöst werden kann.
timezoneoffset_expression
Hierbei handelt es sich um einen Ausdruck im Format [+|-]TZH:TZM oder eine ganze Zahl mit Vorzeichen (Minuten), der bzw. die den Zeitzonenoffset darstellt und von dem bzw. der vorausgesetzt wird, dass er bzw. sie die Sommerzeit berücksichtigt und entsprechend angepasst ist.
Rückgabetyp
datetimeoffset mit der Genauigkeit von Bruchteilen des datetimeoffset_expression-Arguments.
Hinweise
Verwenden Sie SWITCHOFFSET, um einen datetimeoffset-Wert in einem Zeitzonenoffset auszuwählen, der sich vom ursprünglich gespeicherten Zeitzonenoffset unterscheidet. Der gespeicherte time_zone-Wert wird nicht von SWITCHOFFSET aktualisiert.
SWITCHOFFSET kann verwendet werden, um eine datetimeoffset-Spalte zu aktualisieren.
Bei Verwendung von SWITCHOFFSET mit der GETDATE()-Funktion wird die Abfrage u. U. langsam ausgeführt. Das liegt daran, dass der Abfrageoptimierer keine genauen Kardinalitätsschätzungen für den datetime-Wert abrufen kann. Um dieses Problem zu beheben, verwenden Sie den OPTION (RECOMPILE)-Abfragehinweis, um zu erzwingen, dass der Abfrageoptimierer einen Abfrageplan erneut kompiliert, sobald dieselbe Abfrage das nächste Mal ausgeführt wird. Auf diese Weise erhält der Optimierer exakte Kardinalitätsschätzungen und kann einen effizienteren Abfrageplan erzeugen. Weitere Informationen zum RECOMPILE-Abfragehinweis finden Sie unter Abfragehinweise (Transact-SQL).
DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);
Beispiele
Im folgenden Beispiel wird SWITCHOFFSET
verwendet, um einen anderen als den in der Datenbank gespeicherten Zeitzonenoffset-Wert anzuzeigen.
CREATE TABLE dbo.test
(
ColDatetimeoffset datetimeoffset
);
GO
INSERT INTO dbo.test
VALUES ('1998-09-20 7:45:50.71345 -5:00');
GO
SELECT SWITCHOFFSET (ColDatetimeoffset, '-08:00')
FROM dbo.test;
GO
--Returns: 1998-09-20 04:45:50.7134500 -08:00
SELECT ColDatetimeoffset
FROM dbo.test;
--Returns: 1998-09-20 07:45:50.7134500 -05:00