В вашей таблице есть значения, которые нельзя преобразовать в даты. Полная проверка форматов даты - непростая задача. Oracle не предоставляет встроенного обработчика ошибок для to_date()
, поэтому типичным решением является создание функции проверки.
Однако, начиная Oracle 12 c выпуск 2, эта задача получает гораздо проще: вы можете использовать cast()
с опцией on conversion error
для этого.
Вот запрос, который вытащит все недопустимые строки даты из вашей таблицы:
select *
from mytable
where
date_in is not null
and cast(datein as date default null on conversion error, 'dd/mm/yyyy') is null
Вы можете также используйте ту же технику непосредственно в вашем запросе:
select *
from mytable
where
cast(datein as date default null on conversion error, 'dd/mm/yyyy')
>= to_date('10/04/2020','dd/mm/yyyy')
order by id