Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Abrufen nach TZNAME Ist das möglich?

Wir können die TIMEZONE_REGION aus einem Zeitstempel extrahieren, indem wir einen TIMESTAMP WITH TIMEZONE bereitstellen. So:

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> 

Das letzte Ergebnis gibt UNKNOWN zurück, da mehr als ein Zeitzonenname einem Offset von minus vier Stunden zugeordnet ist. Es gibt verschiedene Möglichkeiten, den Zeitzonennamen auf Sitzungsebene festzulegen; Eine davon ist wahrscheinlich die beste Methode, um dieses Problem zu umgehen. Weitere Informationen .