Oracle

如何在 Oracle 的 TO_DATE 呼叫中正確使用時區格式說明符

  • August 25, 2016

我正在嘗試DATE使用以下語句獲取對象:

TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD HH24:MI:SS TZR')

TO_DATE('1970-01-01 00:00:00 UTC','YYYY-MM-DD TZH:TZM:SS TZR')

但在這兩種情況下,它都在告訴我:ORA-01821: date format not recognized.

我從https://www.techonthenet.com/oracle/functions/to_date.phpTZR獲得了格式說明符,即:

TZD 夏令時資訊。例如,“太平洋標準時間”
TZH 時區小時。
TZM 時區分鐘。
TZR 時區區域。

用時區指定日期/時間的正確方法是什麼?

日期時間格式模型

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

如果你想要一個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

引用自:https://dba.stackexchange.com/questions/147906