Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Base de Dados SQL do Azure
Base de dados SQL no Microsoft Fabric
A SET TIME ZONE instrução Transact-SQL (T-SQL) é usada para definir um valor de fuso horário na Base de Dados SQL do Azure e uma base de dados SQL na Microsoft Fabric.
Note
SET TIME ZONEnão é suportado no SQL Server nem no Azure SQL Managed Instance.
SET TIME ZONE sobrepõe o valor do fuso horário ao nível da base de dados ou da instância. O valor do fuso horário é o mesmo que a name coluna na vista do sistema sys.time_zone_info .
Transact-SQL convenções de sintaxe
Syntax
SET TIME ZONE { 'time_zone_value' | 'LOCAL' }
[ ; ]
Arguments
{ 'time_zone_value' | 'LOCAL' }
Especifica o valor do fuso horário.
time_zone_value é nvarchar(128), com um padrão de LOCAL.
Se LOCAL for especificado, então o valor do fuso horário predefinido atual da sessão é definido para o valor original do fuso horário da sessão, que pode ser opção com âmbito de base de dados ou o padrão da instância.
Uma lista dos fusos horários instalados é exibida através da vista sys.time_zone_info sistema.
Remarks
Se SET TIME ZONE for usado num módulo T-SQL ou num lote SQL dinâmico, então a alteração aplica-se apenas ao âmbito de execução do módulo ou ao lote SQL dinâmico. Após a conclusão da execução do módulo ou do SQL dinâmico, a definição do fuso horário da sessão reverte para o valor do fuso horário em vigor antes da execução do módulo ou do lote SQL dinâmico.
Permissions
Requer a pertença ao papel de base de dados pública fixa.
Examples
Os exemplos de código neste artigo utilizam a base de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode descarregar a partir do repositório do GitHub Azure Data SQL Samples Repository.
A. Consulte as definições atuais do fuso horário
A consulta seguinte devolve o nome do servidor, nome da base de dados e versão do produto.
SELECT @@servername AS ServerName,
DB_NAME() AS DatabaseName,
SERVERPROPERTY('ResourceVersion') AS ProductVersion;
A consulta seguinte lista os fusos horários válidos, ordenados pelo seu deslocamento UTC.
SELECT *
FROM sys.time_zone_info
ORDER BY current_utc_offset;
A consulta seguinte verifica o valor atual da TIME_ZONE configuração com escopo da base de dados.
SELECT *
FROM sys.database_scoped_configurations
WHERE name = 'TIME_ZONE';
Se o fuso horário não estiver definido ao nível da base de dados, por defeito passa para o fuso horário da instância. A definição do fuso horário da instância depende da plataforma:
| Platform | Description |
|---|---|
| Windows | O fuso horário do sistema operativo subjacente. |
| Linux | O fuso horário do processo do SQL Server, que podes definir usando a TZ variável de ambiente. |
| Base de Dados SQL do Azure | O fuso horário da instância SQL, que é sempre UTC e não pode ser alterado hoje. |
| Azure SQL Managed Instance | O fuso horário da instância SQL, que é UTC por defeito e só pode ser modificado na altura da criação da instância hoje. |
B. Defina o fuso horário ao nível da base de dados
O exemplo seguinte define o fuso horário definido pela base de dados para a Hora Padrão da Nova Zelândia, e depois revê as funções afetadas.
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. Redefinir o fuso horário com escopo da base de dados para o padrão
O exemplo seguinte define o fuso horário com âmbito da base de dados de volta para LOCAL, e depois revê as funções afetadas.
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. Defina o fuso horário ao nível da sessão
O exemplo seguinte define o fuso horário da sessão para a Hora Padrão do Pacífico e depois para a Hora Padrão da Índia, rever as funções afetadas após cada alteração.
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. Redefinir o fuso horário da sessão para o padrão
O exemplo seguinte reinicia a sessão para o fuso horário padrão da instância ou plataforma.
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. As visualizações do sistema retornam sempre o fuso horário da instância
As visualizações do sistema que incluem valores de tempo retornam sempre o fuso horário da instância, independentemente do fuso horário da sessão ou da base de dados.
SELECT *
FROM sys.dm_exec_sessions;
SELECT *
FROM sys.dm_exec_query_stats;
SELECT *
FROM sys.objects;