SWITCHOFFSET (Transact-SQL)
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 die zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
Argumente
DATETIMEOFFSET
Ein Ausdruck, der in einen datetimeoffset(n)-Wert aufgelöst werden kann.time_zone
Eine Zeichenfolge im Format [+|-]TZH:TZM oder eine ganze Zahl mit Vorzeichen (Minuten), die den Zeitzonenoffset darstellt und von der vorausgesetzt wird, dass sie die Sommerzeit berücksichtigt und entsprechend angepasst ist.
Rückgabetyp
datetimeoffset mit der Genauigkeit von Bruchteilen des DATETIMEOFFSET-Arguments.
Hinweise
Verwenden Sie SWITCHOFFSET, um einen datetimeoffset-Wert in einem Zeitzonenoffset auszuwählen, der sich vom ursprünglich gespeicherten Zeitzonenoffset unterscheidet. SWITCHOFFSET aktualisiert den gespeicherten time_zone-Wert nicht.
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