Share via


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 zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).

Themenlink (Symbol) 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. Der gespeicherte time_zone-Wert wird von SWITCHOFFSET nicht aktualisiert.

SWITCHOFFSET kann verwendet werden, um eine datetimeoffset-Spalte zu aktualisieren.

Wenn Sie SWITCHOFFSET mit der GETDATE()-Funktion verwenden, kann dies zu einer verlangsamten Abfrageausführung führen, da der Abfrageoptimierer keine genauen Kardinalitätsschätzungen für den GETDATE-Wert abrufen kann. Es wird empfohlen, den GETDATE-Wert vorab zu berechnen und den Wert dann wie im folgenden Beispiel in der Abfrage anzugeben. Verwenden Sie außerdem den OPTION (RECOMPILE)-Abfragehinweis, um vom Abfrageoptimierer zu erzwingen, dass ein Abfrageplan beim nächsten Ausführen derselben Abfrage erneut kompiliert wird. Dem Optimierer stehen daraufhin genaue Kardinalitätsschätzungen für GETDATE() zur Verfügung, und er erstellt einen effizienteren Abfrageplan.

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

Siehe auch

Verweis

CAST und CONVERT (Transact-SQL)