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

Confusão de fuso horário do Oracle 10g


Na verdade, existem 3 fusos horários aqui, não 2
  • o fuso horário da sessão/cliente
    • Mostrado em SESSIONTIMEZONE
    • Este é o fuso horário de CURRENT_DATE, LOCALTIMESTAMP e CURRENT_TIMESTAMP. A diferença entre esses 3 é o tipo de retorno, eles retornam DATE, TIMESTAMP e TIMESTAMP WITH TIME ZONE respectivamente)
  • O fuso horário do banco de dados
    • Mostrado em DBTIMEZONE
    • Este é o fuso horário usado para o armazenamento interno dos valores TIMESTAMP WITH LOCAL TIME ZONE. Observe que os valores são convertidos de/para o fuso horário da sessão em inserir/selecionar, portanto, na verdade, não é tão importante quanto parece
    • Este NÃO é o fuso horário de SYSDATE/SYSTIMESTAMP
  • O fuso horário do SO do banco de dados
    • No unix, é baseado na variável TZ quando o Oracle é iniciado
    • Este é o fuso horário de SYSDATE e SYSTIMESTAMP

Em seu primeiro exemplo, posso ver que a sessão TZ é UTC-6, o banco de dados TZ é UTC e o fuso horário do sistema operacional do banco de dados é UTC-6.

Em seu segundo exemplo, posso ver que a sessão TZ é UTC-6, o banco de dados TZ é UTC+2 e o fuso horário do sistema operacional do banco de dados é UTC+1.