Delen via


SWITCHOFFSET (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Retourneert een datum/tijdoffset-waarde die wordt gewijzigd van de opgeslagen tijdzone-offset in een opgegeven nieuwe tijdzone-offset.

Zie Datum- en tijdgegevenstypen en -functies voor een overzicht van alle Transact-SQL datum- en tijdgegevenstypen en -functies.

Transact-SQL syntaxis-conventies

Syntaxis

SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )

Arguments

datetimeoffset_expression

Een expressie die kan worden omgezet in een datum/tijdoffset(n) -waarde.

timezoneoffset_expression

Een expressie in de notatie [+|-]TZH:TZM of een ondertekend geheel getal (van minuten) dat de tijdzone-offset vertegenwoordigt, en wordt ervan uitgegaan dat deze zomertijdbewust en aangepast is.

Retourtypen

datetimeoffset met de breuknauwkeurigheid van het argument datetimeoffset_expression .

Opmerkingen

Gebruik SWITCHOFFSET deze optie om een datum/tijdoffset-waarde te selecteren in een tijdzoneverschil dat verschilt van de tijdzone-offset die oorspronkelijk is opgeslagen. SWITCHOFFSET werkt de opgeslagen time_zone waarde niet bij.

SWITCHOFFSET kan worden gebruikt om een datetimeoffset-kolom bij te werken.

Het gebruik met SWITCHOFFSET de functie GETDATE() kan ertoe leiden dat de query langzaam wordt uitgevoerd. Dit komt doordat de queryoptimalisatie geen nauwkeurige kardinaliteitschattingen kan verkrijgen voor de datum/tijd-waarde. Als u dit probleem wilt oplossen, gebruikt u de OPTION (RECOMPILE) queryhint om de queryoptimalisatie te dwingen een queryplan opnieuw te compileren wanneer dezelfde query de volgende keer wordt uitgevoerd. De optimizer heeft vervolgens nauwkeurige kardinaliteitschattingen en produceert een efficiƫnter queryplan. Zie Hints voor query's voor meer informatie over de RECOMPILE queryhint.

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

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

Voorbeelden

In het volgende voorbeeld wordt een SWITCHOFFSET andere tijdzone-offset weergegeven dan de waarde die is opgeslagen in de database.

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