Oracle
 sql >> Database >  >> RDS >> Oracle

Confusione del fuso orario Oracle 10g

In realtà ci sono 3 fusi orari qui, non 2

  • il fuso orario della sessione/client
    • Mostrato in SESSIONTIMEZONE
    • Questo è il fuso orario di CURRENT_DATE, LOCALTIMESTAMP e CURRENT_TIMESTAMP. La differenza tra questi 3 è il tipo di ritorno, restituiscono rispettivamente una DATA, TIMESTAMP e TIMESTAMP CON FUSO ORARIO)
  • Il fuso orario del database
    • Mostrato in DBTIMEZONE
    • Questo è il fuso orario utilizzato per la memorizzazione interna dei valori TIMESTAMP CON FUSO ORARIO LOCALE. Nota che i valori vengono convertiti in/dal fuso orario della sessione all'inserimento/selezione, quindi in realtà non è così importante come sembra
    • Questo NON è il fuso orario di SYSDATE/SYSTIMESTAMP
  • Il fuso orario del sistema operativo del database
    • In unix, si basa sulla variabile TZ all'avvio di Oracle
    • Questo è il fuso orario di SYSDATE e SYSTIMESTAMP

Nel tuo primo esempio, posso vedere che la sessione TZ è UTC-6, la TZ del database è UTC e il fuso orario del sistema operativo del database è UTC-6.

Nel tuo secondo esempio, posso vedere che la sessione TZ è UTC-6, la TZ del database è UTC+2 e il fuso orario del sistema operativo del database è UTC+1.