Freigeben über


SCHALTEROFFSET (Transact-SQL)

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Datenbank in Microsoft Fabric

Gibt einen datetimeoffset-Wert zurück, der von einem gespeicherten Zeitzonenoffset in einen angegebenen neuen Zeitzonenoffset geändert wurde.

Eine Übersicht über alle Transact-SQL Datentypen und Funktionen für Datum und Uhrzeit finden Sie unter Datums- und Uhrzeitdatentypen und -funktionen.

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

Ein Ausdruck im Format [+|-]TZH:TZM oder eine signierte ganze Zahl (von Minuten), die den Zeitzonenoffset darstellt, und wird angenommen, dass es sich um sommersparende Berücksichtigung und Anpassung handelt.

Rückgabetypen

datetimeoffset mit der Genauigkeit von Bruchteilen des datetimeoffset_expression-Arguments.

Hinweise

Wird verwendet SWITCHOFFSET , um einen Datetimeoffset-Wert in einen Zeitzonenoffset-Offset auszuwählen, der sich von dem ursprünglich gespeicherten Zeitzonenoffset unterscheidet. SWITCHOFFSET aktualisiert nicht den gespeicherten time_zone Wert.

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

Die Verwendung SWITCHOFFSET mit der Funktion GETDATE() kann dazu führen, dass die Abfrage langsam ausgeführt wird. 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 bei der nächsten Ausführung derselben Abfrage neu kompilieren kann. Der Optimierer verfügt dann über genaue Kardinalitätsschätzungen und erzeugt einen effizienteren Abfrageplan. Weitere Informationen zum RECOMPILE Abfragehinweis finden Sie unter Abfragehinweise.

DECLARE @dt AS 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