Megosztás a következőn keresztül:


KAPCSOLÓ OFFSET (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Egy datetimeoffset értéket ad vissza, amely a tárolt időzóna eltolásáról egy megadott új időzóna-eltolásra módosul.

Az összes Transact-SQL dátum- és időadattípus és -függvény áttekintése: Dátum és idő adattípusok és függvények.

Transact-SQL szintaxis konvenciók

Szemantika

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Arguments

datetimeoffset_expression

Egy datetimeoffset(n) értékre feloldható kifejezés.

timezoneoffset_expression

[+|-]TZH:TZM vagy aláírt egész szám (perc) formátumban lévő kifejezés, amely az időzóna eltolását jelöli, és amely a nyári időszámítást figyelembe veszi és módosítja.

Visszatérési típusok

datetimeoffset a datetimeoffset_expression argumentum tört pontosságával.

Megjegyzések

SWITCHOFFSET érték kiválasztására használható olyan időzóna-eltolásba, amely eltér az eredetileg tárolt időzóna-eltolástól. SWITCHOFFSET nem frissíti a tárolt time_zone értéket.

SWITCHOFFSET egy datetimeoffset oszlop frissítésére használható.

A SWITCHOFFSET függvény GETDATE() használata a lekérdezés lassú futtatását okozhatja. Ennek az az oka, hogy a lekérdezésoptimalizáló nem tud pontos számossági becslést beolvasni a datetime értékhez. A probléma megoldásához a OPTION (RECOMPILE) lekérdezési tipp használatával kényszerítse a lekérdezésoptimalizálót egy lekérdezésterv újrafordítására, amikor legközelebb ugyanazt a lekérdezést végrehajtja. Az optimalizáló ezután pontos számosságbecslésekkel rendelkezik, és hatékonyabb lekérdezési tervet hoz létre. A lekérdezési tippről további információt a RECOMPILELekérdezési tippek című témakörben talál.

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

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

Példák

Az alábbi példa SWITCHOFFSET az adatbázisban tárolt értékétől eltérő időzóna-eltolást jelenít meg.

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