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

Oracle :Récupérer par TZNAME est-ce possible ?

Nous pouvons extraire le TIMEZONE_REGION d'un horodatage, en fournissant un TIMESTAMP WITH TIMEZONE. Comme ceci :

SQL> select extract(timezone_region from current_timestamp)
  2  from dual
  3  /

EXTRACT(TIMEZONE_REGIONFROMCURRENT_TIMESTAMP)
----------------------------------------------------------------
CET

SQL>  alter session set time_zone='UTC';

Session altered.

SQL> select extract(timezone_region from current_timestamp)
  2  from dual
  3  /

EXTRACT(TIMEZONE_REGIONFROMCURRENT_TIMESTAMP)
----------------------------------------------------------------
UTC

SQL> alter session set time_zone='-04:00';

Session altered.

SQL> select extract(timezone_region from current_timestamp)
  2  from dual
  3  /

EXTRACT(TIMEZONE_REGIONFROMCURRENT_TIMESTAMP)
----------------------------------------------------------------
UNKNOWN

SQL> 

Le dernier résultat renvoie UNKNOWN car plusieurs noms de fuseau horaire correspondent à un décalage de moins quatre heures. Il existe différentes manières de définir le nom du fuseau horaire au niveau de la session ; l'un d'entre eux est probablement la meilleure façon de contourner ce problème. En savoir plus .