Ошибка ORA-01830 с to_date

Я пытаюсь создать дату, вычесть два дня, а затем преобразовать ее в char. По какой-то причине я получаю следующую ошибку:

ORA-01830: date format picture ends before converting entire input string

Вот мой код:

 SELECT TO_CHAR(to_date('20-JUL-01 10:40:12')-2, 'dd-Mon-yy 24HH:MI:SS') as "Subtract 2 Days"
       FROM DUAL;

Я не уверен, что не так, кажется, проблема с секундами


person i_am_so_stupid    schedule 09.03.2016    source источник


Ответы (1)


По умолчанию в Oracle используются 12-часовые часы с AM/PM. Итак, вам нужен формат даты для преобразования даты:

SELECT TO_CHAR(to_date('20-JUL-01 10:40:12', 'dd-Mon-yy HH24:MI:SS')-2,
               'dd-Mon-yy HH24:MI:SS') as "Subtract 2 Days"
FROM DUAL;

Кроме того, правильным 24-часовым обозначением является «ЧЧ24», а не «24ЧЧ».

person Gordon Linoff    schedule 09.03.2016
comment
Я должен сказать: этот ответ не только получил анонимный отрицательный голос (но у него есть и другие положительные голоса), но я также проверил его и знаю, что он правильный (хотя, конечно, может быть опечатка). - person Gordon Linoff; 09.03.2016
comment
анонимные отрицательные голоса без причины кажутся ужасно частыми в последнее время здесь. Как и люди, которые не принимают никаких ответов (просто принимают помощь и убегают, не признавая ее - грубо!), или принимают, но не голосуют. шесть из моих последних одиннадцати принятых ответов получили 0 голосов. Не то чтобы меня нужно было похлопать по плечу, но да – не стоит ожидать момента, чтобы выразить благодарность за помощь. - person Michael Broughton; 09.03.2016
comment
Я могу только догадываться, что кто-то возражал против первого предложения — какие-либо территории показывают компоненты времени по умолчанию? И если сеанс NLS_DATE_FORMAT имеет HH и AM, он не будет ошибаться со значением OP, он просто предположит, что это утро. Конечно, ни одно из них не умаляет правильности решения, которое вы дали. Люди странные... - person Alex Poole; 09.03.2016