Oracle
 sql >> Base de données >  >> RDS >> Oracle

Confusion du fuseau horaire Oracle 10g

Il y a en fait 3 fuseaux horaires ici, pas 2

  • le fuseau horaire de la session/du client
    • Affiché dans SESSIONTIMEZONE
    • Il s'agit du fuseau horaire CURRENT_DATE, LOCALTIMESTAMP et CURRENT_TIMESTAMP. La différence entre ces 3 est le type de retour, ils retournent respectivement DATE, TIMESTAMP et TIMESTAMP WITH TIME ZONE)
  • Le fuseau horaire de la base de données
    • Affiché dans DBTIMEZONE
    • Il s'agit du fuseau horaire utilisé pour le stockage interne des valeurs TIMESTAMP WITH LOCAL TIME ZONE. Notez que les valeurs sont converties vers/depuis le fuseau horaire de la session lors de l'insertion/de la sélection, ce n'est donc pas aussi important qu'il n'y paraît
    • Ce n'est PAS le fuseau horaire de SYSDATE/SYSTIMESTAMP
  • Le fuseau horaire du système d'exploitation de la base de données
    • Sous unix, il est basé sur la variable TZ au démarrage d'Oracle
    • Il s'agit du fuseau horaire de SYSDATE et SYSTIMESTAMP

Dans votre premier exemple, je peux voir que la session TZ est UTC-6, la base de données TZ est UTC et le fuseau horaire du système d'exploitation de la base de données est UTC-6.

Dans votre deuxième exemple, je peux voir que la session TZ est UTC-6, la base de données TZ est UTC+2 et le fuseau horaire du système d'exploitation de la base de données est UTC+1.