在WSH_Delivery_Details_Interface(https://docs.oracle.com/cloud/r13_update17c/scmcs_gs/OEDSC/WSH_DELIVERY_DETAILS_tbl.htm)中插入日期会引发此错误
查询:
insert into WSH_DEL_DETAILS_Interface
(DELIVERY_DETAIL_INTERFACE_ID, CREATION_DATE, Date_Requested)
values
(30010985553,
TO_DATE('11/12/2018T05:10:30-00:00', 'DD/MM/YYYY '),
TO_DATE('11/12/2018', 'DD/MM/YYYY'));
在creation_date和date_requested列中的示例记录:
Date_Requested Creation_Date
16-JUN-10 17-JUN-10 03.40.31.865000000 PM
答案 0 :(得分:4)
错误可以减少为:
select TO_DATE('11/12/2018T05:10:30-00:00','DD/MM/YYYY ') from dual;
Error report -
ORA-01861: literal does not match format string
这很合理,因为显然不匹配。您需要在格式掩码中包含时间元素,还必须包含固定的“ T”和固定的时区偏移量的字符文字:
select TO_DATE('11/12/2018T05:10:30-00:00','DD/MM/YYYY"T"HH24:MI:SS"-00:00"') from dual;
TO_DATE('11/12/2018
-------------------
2018-12-11 05:10:30
如果“时区”部分不是固定的,需要兑现,那么您可以使用to_timestamp_tz()
代替to_date()
:
select TO_TIMESTAMP_TZ('11/12/2018T05:10:30-00:00','DD/MM/YYYY"T"HH24:MI:SS.FFTZH:TZM')
from dual;
TO_TIMESTAMP_TZ('11/12/20
-------------------------
2018-12-11 05:10:30.0 GMT
我在格式模型中包括了.FF
以及时区偏移量元素(如果可以通过区域而不是偏移量,则可以使用TZR
而不是TZH:TZM
) ,因为您的现有数据示例只有几分之一秒的时间,即使您的文字字符串在这种情况下也不是
如果需要,您可以cast()
将该日期select TO_TIMESTAMP_TZ('11/12/2018T04:10:30-01:00','DD/MM/YYYY"T"HH24:MI:SS.FFTZH:TZM') as orig,
SYS_EXTRACT_UTC(
TO_TIMESTAMP_TZ('11/12/2018T04:10:30-01:00','DD/MM/YYYY"T"HH24:MI:SS.FFTZH:TZM')) as utc
from dual;
ORIG UTC
---------------------------- ---------------------
2018-12-11 04:10:30.0 -01:00 2018-12-11 05:10:30.0
设置为日期或原始时间戳,如果输入值可以是其他区域/偏移量,则可以将其标准化为UTC:
map()