Дата вставки выдает ошибку ORA-01861: литерал не соответствует строке формата - PullRequest
0 голосов
/ 11 декабря 2018

Вставить дату в 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

1 Ответ

0 голосов
/ 11 декабря 2018

Ошибка может быть уменьшена до:

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

Если эта часть 'часового пояса' не является 't исправлено и должно учитываться, тогда вы можете использовать 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(), что к дате или простой отметке времени, если это необходимо, или, возможно, нормализовать к UTC, если входными значениями могут быть другие зоны / смещения:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...