Я не могу воспроизвести ваш результат, но я получаю неправильную дату для 1-MAY-18
в SQL Fiddle, даже если используется литерал даты (но не в том случае, если я использую свой экземпляр Oracle 11g или Oracle 18c в OracleLive SQL веб-сайт):
SQL Fiddle
Запрос 1 :
SELECT TO_DATE( '1-MAY-18', 'DD-MON-YYYY' ),
DATE '0018-05-01',
TO_DATE( '1-MAY-18', 'DD-MON-RR' )
FROM DUAL
Результаты :
| TO_DATE('1-MAY-18','DD-MON-YYYY') | DATE'0018-05-01' | TO_DATE('1-MAY-18','DD-MON-RR') |
|-----------------------------------|----------------------|---------------------------------|
| 0018-04-29T00:00:00Z | 0018-04-29T00:00:00Z | 2018-05-01T00:00:00Z |
Вы заметите, что модель формата YYYY
и числовое значение 18
дают год 18 AD
, а не 2018 AD
.Чтобы это исправить, вам нужно либо указать весь 4-значный год, либо использовать модель формата RR
.