sql >> Base de Datos >  >> RDS >> Oracle

Confusión de la zona horaria de Oracle 10g

En realidad, hay 3 zonas horarias aquí, no 2

  • la zona horaria de la sesión/cliente
    • Mostrado en SESSIONTIMEZONE
    • Esta es la zona horaria de CURRENT_DATE, LOCALTIMESTAMP y CURRENT_TIMESTAMP. La diferencia entre esos 3 es el tipo de devolución, devuelven una FECHA, TIMESTAMP y TIMESTAMP CON ZONA HORARIA respectivamente)
  • La zona horaria de la base de datos
    • Mostrado en DBTIMEZONE
    • Esta es la zona horaria utilizada para el almacenamiento interno de valores TIMESTAMP CON LOCAL TIME ZONE. Tenga en cuenta que los valores se convierten a/desde la zona horaria de la sesión al insertar/seleccionar, por lo que en realidad no es tan importante como parece
    • Esta NO es la zona horaria de SYSDATE/SYSTIMESTAMP
  • La zona horaria del sistema operativo de la base de datos
    • En Unix, se basa en la variable TZ cuando se inicia Oracle
    • Esta es la zona horaria de SYSDATE y SYSTIMESTAMP

En su primer ejemplo, puedo ver que la sesión TZ es UTC-6, la base de datos TZ es UTC y la zona horaria del sistema operativo de la base de datos es UTC-6.

En su segundo ejemplo, puedo ver que la sesión TZ es UTC-6, la base de datos TZ es UTC+2 y la zona horaria del sistema operativo de la base de datos es UTC+1.