如何在 Oracle 的 TO_DATE 调用中正确使用时区格式说明符

Dan*_*ray 3 oracle date-format date

我正在尝试DATE使用以下语句获取对象:

TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD HH24:MI:SS TZR')
Run Code Online (Sandbox Code Playgroud)

TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD TZH:TZM:SS TZR')
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,它都告诉我:ORA-01821: date format not recognized.

TZRhttps://www.techonthenet.com/oracle/functions/to_date.php得到了格式说明符,即:

TZD 夏令时信息。例如,“太平洋标准时间”
TZH 时区小时。
TZM 时区分钟。
TZR 时区区域。

用时区指定日期/时间的正确方法是什么?

Bal*_*app 6

日期时间格式模型

TZR - 时区区域信息。该值必须是数据库中支持的时区区域名称之一。在时间戳和间隔格式中有效,但在 DATE 格式中无效

select to_timestamp_tz
  (
    '1970-01-01 00:00:00 UTC',
    'YYYY-MM-DD HH24:MI:SS TZR'
  )
  as result
from dual;

RESULT
----------------------------------------
01-JAN-70 12.00.00.000000000 AM UTC
Run Code Online (Sandbox Code Playgroud)

如果你想要一个DATE类型,你需要转换它:

select cast(to_timestamp_tz
  (
    '1970-01-01 00:00:00 UTC',
    'YYYY-MM-DD HH24:MI:SS TZR'
  ) as date)
  as result
from dual;

RESULT
----------------------------------------
01-JAN-70
Run Code Online (Sandbox Code Playgroud)