Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

sysdate e dbtimezone diferentes no Oracle Database


É um mal-entendido comum que DBTIMEZONE é o fuso horário para SYSDATE e SYSTIMESTAMP

SYSDATE e SYSTIMESTAMP são retornados no fuso horário do sistema operacional no qual o servidor de banco de dados reside.

DBTIMEZONE é o fuso horário (interno) de TIMESTAMP WITH LOCAL TIME valores. Não conheço nenhum uso prático disso. Observe que você não pode alterar DBTIMEZONE em seu banco de dados se o banco de dados contiver uma tabela com um TIMESTAMP WITH LOCAL TIME ZONE coluna e a coluna contém dados.

Se você quiser a hora atual em DBTIMEZONE, execute
select SYSTIMESTAMP AT TIME ZONE DBTIMEZONE 
from dual;

CURRENT_TIMESTAMP AT TIME ZONE DBTIMEZONE também está funcionando.

Veja também Como para lidar com o horário de verão no banco de dados Oracle