Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
Restituisce un valore datetimeoffset che è stato convertito dalla differenza di fuso orario archiviata a una nuova differenza di fuso orario specificata.
Per una panoramica di tutti i tipi di dati e le funzioni di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
SWITCHOFFSET ( datetimeoffset_expression , timezoneoffset_expression )
Argomenti
datetimeoffset_expression
Espressione che può essere risolta in un valore datetimeoffset(n).
timezoneoffset_expression
Un'espressione nel formato [+|-]TZH:TZM o un intero con segno (di minuti) che rappresenta l'offset del fuso orario e viene considerato compatibile con l'ora legale e regolato.
Tipi restituiti
datetimeoffset con la precisione frazionaria dell'argomento datetimeoffset_expression.
Osservazioni:
Utilizzare SWITCHOFFSET per selezionare un valore datetimeoffset in una differenza di fuso orario diversa dall'offset del fuso orario archiviato in origine.
SWITCHOFFSET non aggiorna il valore time_zone archiviato.
SWITCHOFFSET può essere usato per aggiornare una colonna datetimeoffset .
L'uso SWITCHOFFSET con la funzione GETDATE() può causare un rallentamento dell'esecuzione della query. Questo perché Query Optimizer non è in grado di ottenere stime relative alla cardinalità precise per il valore di data e ora. Per risolvere questo problema, usare l'hint OPTION (RECOMPILE) per la query per forzare la ricompilazione di un piano di query alla successiva esecuzione della stessa query. L'utilità di ottimizzazione dispone quindi di stime accurate della cardinalità e produce un piano di query più efficiente. Per altre informazioni sull'hint per la RECOMPILE query, vedere Hint per la query.
DECLARE @dt AS DATETIMEOFFSET = switchoffset(CONVERT (DATETIMEOFFSET, GETDATE()), '-04:00');
SELECT *
FROM t
WHERE c1 > @dt
OPTION (RECOMPILE);
Esempi
Nell'esempio seguente viene utilizzato SWITCHOFFSET per visualizzare una differenza di fuso orario diversa dal valore archiviato nel 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