我收到來自像我們下面的API之一的響應,甲骨文UTC日期字符串插入日期列
'createdate' => 'Sun Jan 31 04:40:15 UTC 2016'
我使用Oracle數據庫來保存API的數據,我用Perl語言解析API數據。在將上面的日期字段插入到db之前,我在我的Perl中將以下字符串轉換爲日期,並且工作正常。
$res->{'createdate'} = strftime ('%d-%b-%y',localtime(str2time($res->{'createdate'})));
我已經嘗試使用像下面的插入查詢(甲骨文)相同,所以我可以刪除perl轉換。它結束了一些錯誤。請幫助我。謝謝。
對於如:
insert
into device_det (id, createdate)
values (111111,TO_TIMESTAMP('Wed Aug 16 16:59:31 UTC 2017', 'YYYY-MM-DD'));
這給瞭如下錯誤。
Error report -
SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
01841. 00000 - "(full) year must be between -4713 and +9999, and not be 0"
*Cause: Illegal year entered
*Action: Input year in the specified range
「TO_TIMESTAMP」的第二個參數不應該是匹配該數據串的模式嗎? 'YYYY-MM-DD'是你的目標,對吧?根據[文檔](https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions193.htm),目標始終是「TIMESTAMP」類型。但是我從來沒有用過Oracle,我只是在閱讀文檔。 – simbabque
嘗試'TO_TIMESTAMP_TZ('Wed Aug 16 16:59:31 UTC 2017','Dy Mon DD HH24:MI:SS TZR YYYY')' –