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

sysdate et dbtimezone différents dans Oracle Database

C'est un malentendu courant que DBTIMEZONE est le fuseau horaire pour SYSDATE et SYSTIMESTAMP

SYSDATE et SYSTIMESTAMP sont renvoyés dans le fuseau horaire du système d'exploitation sur lequel réside le serveur de base de données.

DBTIMEZONE est le fuseau horaire (interne) de TIMESTAMP WITH LOCAL TIME valeurs. Je n'en connais aucune utilisation pratique. Remarque, vous ne pouvez pas modifier DBTIMEZONE sur votre base de données si la base de données contient une table avec un TIMESTAMP WITH LOCAL TIME ZONE colonne et la colonne contient des données.

Si vous voulez exécuter l'heure actuelle à DBTIMEZONE

select SYSTIMESTAMP AT TIME ZONE DBTIMEZONE 
from dual;

CURRENT_TIMESTAMP AT TIME ZONE DBTIMEZONE fonctionne également.

Voir aussi Comment pour gérer l'heure d'été dans la base de données Oracle