我需要将sysdate和时间转换为像EST这样的特定时区。我不能假设我当前的时区。

如何在plsql中转换它?请帮我。

最佳答案

假设您具有TIMESTAMP WITH TIME ZONE(例如systimestamp),则可以使用AT TIME ZONE语法。例如,我可以采用当前的systimestamp并通过指定不同的时区名称将其转换为UTC(GMT),东部和太平洋时区。

SQL> ed
Wrote file afiedt.buf

  1  select systimestamp at time zone 'UTC' current_time_in_utc,
  2         systimestamp at time zone 'Us/Eastern' current_time_in_est,
  3         systimestamp at time zone 'US/Pacific' current_time_in_pst
  4*   from dual
SQL> /

CURRENT_TIME_IN_UTC
---------------------------------------------------------------------------
CURRENT_TIME_IN_EST
---------------------------------------------------------------------------
CURRENT_TIME_IN_PST
---------------------------------------------------------------------------
26-APR-12 05.36.11.802000 PM UTC
26-APR-12 01.36.11.802000 PM US/EASTERN
26-APR-12 10.36.11.802000 AM US/PACIFIC

08-07 05:55