Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Returnerar ett datetimeoffset-värde som ändras från den lagrade tidszonsförskjutningen till en angiven ny tidszonsförskjutning.
En översikt över alla Transact-SQL datatyper och funktioner för datum och tid finns i Datatyper och funktioner för datum och tid.
Transact-SQL syntaxkonventioner
Syntax
SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )
Arguments
datetimeoffset_expression
Ett uttryck som kan matchas till ett datetimeoffset(n) -värde.
timezoneoffset_expression
Ett uttryck i formatet [+|-]TZH:TZM eller ett signerat heltal (minuter) som representerar tidszonsförskjutningen och antas vara dagsljusbesparande medveten och justerad.
Returtyper
datetimeoffset med bråkprecisionen för argumentet datetimeoffset_expression .
Anmärkningar
Använd SWITCHOFFSET för att välja ett datetimeoffset-värde i en tidszonsförskjutning som skiljer sig från den tidszonsförskjutning som ursprungligen lagrades.
SWITCHOFFSET uppdaterar inte det lagrade time_zone-värdet .
SWITCHOFFSET kan användas för att uppdatera en datetimeoffset-kolumn .
Om du använder SWITCHOFFSET med funktionen GETDATE() kan frågan köras långsamt. Det beror på att frågeoptimeraren inte kan hämta korrekta kardinalitetsuppskattningar för datetime-värdet. Lös problemet genom att använda frågetipset OPTION (RECOMPILE) för att tvinga frågeoptimeraren att kompilera om en frågeplan nästa gång samma fråga körs. Optimeraren har sedan korrekta kardinalitetsuppskattningar och skapar en effektivare frågeplan. Mer information om frågetipset finns i RECOMPILEFrågetips.
DECLARE @dt AS DATETIMEOFFSET = switchoffset(CONVERT (DATETIMEOFFSET, GETDATE()), '-04:00');
SELECT *
FROM t
WHERE c1 > @dt
OPTION (RECOMPILE);
Examples
I följande exempel används SWITCHOFFSET för att visa en annan tidszonsförskjutning än värdet som lagras i databasen.
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