Oracle to_date () возвращает неверную дату с +2 днями - PullRequest
0 голосов
/ 15 мая 2018

Функция Oracle to_date () возвращает неправильную дату с +2 днями.

Пожалуйста, посмотрите на скриншот

enter image description here

Почему это произошло?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Проблема в том, что вы не соответствуете формату, который вы предоставляете.

Год указан как 18, а TO_DATE ожидает 2018.

Ниже должно работать нормально:

select to_date('11-MAY-18', 'DD-MON-YY') from dual;

OR

select to_date('11-MAY-2018', 'DD-MON-YYYY') from dual;
0 голосов
/ 15 мая 2018

Я не могу воспроизвести ваш результат, но я получаю неправильную дату для 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...