Sdílet prostřednictvím


PŘEPÍNAČ (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrátí hodnotu datetimeoffset , která se změní z posunu uloženého časového pásma na zadaný nový posun časového pásma.

Přehled všech Transact-SQL datových typů a funkcí data a času najdete v tématu Datové typy a funkce data a času.

Transact-SQL konvence syntaxe

Syntaxe

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Arguments

datetimeoffset_expression

Výraz, který lze přeložit na hodnotu datetimeoffset(n).

timezoneoffset_expression

Výraz ve formátu [+|-]TZH:TZM nebo podepsané celé číslo (v minutách), které představuje posun časového pásma, a předpokládá se, že se jedná o letní světlo a upraví se.

Návratové typy

datetimeoffset s desetinnou přesností argumentu datetimeoffset_expression .

Poznámky

Slouží SWITCHOFFSET k výběru hodnoty datetimeoffset do posunu časového pásma, který se liší od posunu časového pásma, který byl původně uložen. SWITCHOFFSET neaktualizuje uloženou time_zone hodnotu.

SWITCHOFFSET lze použít k aktualizaci sloupce datetimeoffset .

Použití SWITCHOFFSET s funkcí GETDATE() může způsobit pomalé spuštění dotazu. Důvodem je to, že optimalizátor dotazů nemůže získat přesné odhady kardinality pro hodnotu datetime. Pokud chcete tento problém vyřešit, použijte nápovědu OPTION (RECOMPILE) dotazu k vynucení optimalizátoru dotazů k opětovnému kompilaci plánu dotazu při příštím spuštění stejného dotazu. Optimalizátor pak má přesné odhady kardinality a vytvoří efektivnější plán dotazů. Další informace o nápovědě RECOMPILE k dotazu najdete v nápovědě k dotazům.

DECLARE @dt AS DATETIMEOFFSET = switchoffset(CONVERT (DATETIMEOFFSET, GETDATE()), '-04:00');

SELECT *
FROM t
WHERE c1 > @dt
OPTION (RECOMPILE);

Examples

Následující příklad používá SWITCHOFFSET k zobrazení jiného posunu časového pásma než hodnota uložená v databázi.

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