SWITCHOFFSET (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 )   

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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  

Weitere Informationen

CAST und CONVERT (Transact-SQL)
AT TIME ZONE (Transact-SQL)