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

Como lidar com o horário de verão no banco de dados Oracle


A resposta é:depende.

No total, seu banco de dados tem três fusos horários
  1. Fuso horário da sua sessão:SESSIONTIMEZONE

Isso você pode alterar por ALTER SESSION SET TIME_ZONE=... a qualquer momento. É relevante para o resultado de

  • CURRENT_DATE

  • LOCALTIMESTAMP

  • CURRENT_TIMESTAMP


Também é o fuso horário de destino quando você faz CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)

Padrão SESSIONTIMEZONE pode ser definido pela variável de ambiente ORA_SDTZ ou (no Windows) pela entrada de registro HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (para Cliente de 32 bits), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (para Cliente de 64 bits).
  1. O fuso horário do banco de dados:DBTIMEZONE

Na verdade, isso não é tão importante no uso diário, é relevante apenas para TIMESTAMP WITH LOCAL TIME ZONE colunas de tipo de dados e define o formato de armazenamento.

Isso NÃO o fuso horário de SYSDATE ou SYSTIMESTAMP !!!

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. Caso contrário, pode ser alterado com ALTER DATABASE SET TIME_ZONE='...'; . A alteração não entra em vigor até que o banco de dados seja encerrado e reiniciado.

DBTIMEZONE é definido quando o banco de dados é criado. Se nenhum fuso horário for fornecido durante a criação do banco de dados, o padrão do Oracle será o fuso horário do sistema operacional do servidor.
  1. O fuso horário do sistema operacional do servidor de banco de dados:

Este fuso horário é relevante para o resultado de

  • SYSDATE

  • SYSTIMESTAMP


Naturalmente, esse fuso horário não pode ser alterado no nível do banco de dados. Caso seu país de origem use o horário de verão, esse fuso horário pode mudar duas vezes por ano. Você pode interrogá-lo com SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual; , por exemplo.

Portanto, se o sistema operacional do seu servidor de banco de dados estiver configurado corretamente, você deverá obter os horários de verão a partir da próxima semana (pelo menos para a Europa)