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:database SQL di Azure
Database SQL in Microsoft Fabric
L'istruzione SET TIME ZONE Transact-SQL (T-SQL) viene utilizzata per impostare un valore di fuso orario in database SQL di Azure e un database SQL in Microsoft Fabric.
Note
SET TIME ZONEnon è supportata in SQL Server o Istanza gestita di SQL di Azure.
SET TIME ZONE sovrascrive il valore del fuso orario a livello di database o di istanza. Il valore del fuso orario è lo stesso della name colonna nella vista di sistema sys.time_zone_info .
Convenzioni relative alla sintassi Transact-SQL
Syntax
SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]
Arguments
{ 'time_zone_value' | 'LOCALE' }
Specifica il valore del fuso orario.
time_zone_value è nvarchar(128), con un predefinito di LOCAL.
Se LOCAL è specificato, allora il valore predefinito attuale del fuso orario della sessione viene impostato al valore originale del fuso orario della sessione, che può essere sia l'opzione con scopo del database sia il valore predefinito dell'istanza.
Un elenco dei fusi orari installati viene mostrato attraverso la vista sys.time_zone_info sistema.
Osservazioni:
Se SET TIME ZONE viene utilizzato in un modulo T-SQL o in un batch SQL dinamico, allora la modifica si applica solo all'ambito di esecuzione del modulo o del batch SQL dinamico. Dopo il completamento dell'esecuzione del modulo o del batch SQL dinamico, l'impostazione del fuso orario della sessione torna al valore del fuso orario effettivo prima dell'esecuzione del modulo o del batch SQL dinamico.
Permissions
Richiede l'appartenenza al ruolo predefinito del database pubblico .
Examples
Gli esempi di codice in questo articolo utilizzano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dal repository GitHub Azure Data SQL Samples Repository.
A. Visualizza le impostazioni attuali del fuso orario
La query seguente restituisce il nome del server, il nome del database e la versione del prodotto.
SELECT @@servername AS ServerName,
DB_NAME() AS DatabaseName,
SERVERPROPERTY('ResourceVersion') AS ProductVersion;
La seguente query elenca i fusi orari validi, ordinati in base al loro offset UTC.
SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;
La query seguente verifica il valore attuale della TIME_ZONE configurazione con ambito del database.
SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';
Se il fuso orario non è impostato a livello di database, viene impostato di default sul fuso orario dell'istanza. L'impostazione del fuso orario dell'istanza dipende dalla piattaforma:
| Platform | Description |
|---|---|
| Windows | Il fuso orario del sistema operativo sottostante. |
| Linux | Il fuso orario del processo SQL Server, che puoi impostare usando la TZ variabile di ambiente. |
| Database SQL di Microsoft Azure | Il fuso orario dell'istanza SQL, che è sempre UTC e oggi non può essere modificato. |
| Istanza gestita di SQL di Azure (Istanza gestita di Azure SQL) | Il fuso orario dell'istanza SQL, che è UTC di default e può essere modificato al momento della creazione dell'istanza solo oggi. |
B. Imposta il fuso orario a livello di database
Il seguente esempio imposta il fuso orario previsto dal database all'ora standard della Nuova Zelanda, quindi esamina le funzioni interessate.
ALTER DATABASE SCOPED CONFIGURATION SET TIME_ZONE = 'New Zealand Standard Time';
GO
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3,
CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
C. Resetta il fuso orario con ambito del database al valore predefinito
Il seguente esempio riporta il fuso orario con ambito del database a LOCAL, quindi esamina le funzioni interessate.
ALTER DATABASE SCOPED CONFIGURATION SET TIME_ZONE = LOCAL;
GO
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime,
CURRENT_TIMESTAMP AS CurrentLocalDateTime2;
D. Imposta il fuso orario a livello di sessione
Il seguente esempio imposta il fuso orario della sessione all'ora standard del Pacifico e poi all'ora standard dell'India, rivedendo le funzioni interessate dopo ogni modifica.
SET TIME ZONE 'Pacific Standard Time';
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone, CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset, SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3, CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
GO
SET TIME ZONE 'India Standard Time';
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone, CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset, SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3, CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
E. Resetta il fuso orario della sessione al valore predefinito
Il seguente esempio resetta la sessione al fuso orario predefinito dell'istanza o della piattaforma.
SET TIME ZONE local;
GO
SELECT CURRENT_TIMEZONE() AS CurrentTimeZone,
CURRENT_TIMEZONE_ID() AS CurrentTimeZoneId,
SYSDATETIMEOFFSET() AS CurrentDateTimeOffset,
SYSDATETIME() AS CurrentLocalDateTime2,
GETDATE() AS CurrentLocalDateTime3,
CURRENT_TIMESTAMP AS CurrentLocalDateTime4;
F. Le viste di sistema restituiscono sempre il fuso orario dell'istanza
Le viste di sistema che includono valori temporali restituiscono sempre il fuso orario dell'istanza, indipendentemente dal fuso orario della sessione o del database.
SELECT *
FROM sys.dm_exec_sessions;
SELECT *
FROM sys.dm_exec_query_stats;
SELECT *
FROM sys.objects;