Хит входного значения недостаточно длинный для формата даты при проверке в предложении where - PullRequest
0 голосов
/ 28 июня 2018
TRUNC(SYSDATE) >= TO_DATE(REPLY_DATE || (EXTRACT(YEAR FROM SYSDATE)+ADD_YEAR),'dd-mm-yyyy')

Вышеуказанный сценарий является одним из условий предложения WHERE в моем сценарии, после добавления условия ошибка генерации всего сценария ORA-01840: input value not long enough for date format

Я пытался выполнить с фактическим значением в запросе выбора, он отлично работает

SELECT TO_DATE('28-06' || (EXTRACT(YEAR FROM SYSDATE)+1),'dd-mm-yyyy') AS reply_date FROM DUAL;  

возврат, 28 июня 19

Столбец REPLY_DATE и ADD_YEAR - это столбцы, содержащие значения 28-06 и 1 соответственно в таблице.

1 Ответ

0 голосов
/ 28 июня 2018

Попробуйте это

TRUNC(SYSDATE) >= ADD_MONTHS(TO_DATE(REPLY_DATE, 'DD-MM'), 12 * ADD_YEAR)

EXTRACT(YEAR FROM SYSDATE) не требуется, потому что, если вы не указываете год в TO_DATE, Oracle принимает текущий год.

Как вы можете гарантировать, что всегда должны подать заявку на текущий год? - Рассмотрим часы в канун Нового года.

...