Oracle 10.2.0.5
Какой самый простой способ идентифицировать строки в таблице, которые имеют «недопустимые» значения в столбцах DATE. Под «недействительным» здесь я подразумеваю двоичное представление, которое нарушает правила Oracle для значений даты.
Недавно у меня возникла проблема с недопустимой датой в столбце.
Мне удалось использовать предикат запроса для поиска конкретной проблемной строки:
WHERE TO_CHAR(date_expr,'YYYYMMDDHH24MISS') = '00000000000000'
В моем случае байт века был недействительным ...
select dump(h.bid_close_date) from mytable h where h.id = 54321
Typ=12 Len=7: 220,111,11,2,1,1,1
Байт века должен быть 100 + двузначный век. В этом случае было добавлено еще 100, как будто значение столетия было «120», что делает год «12011». (Единственный известный мне способ получения недопустимых значений DATE в базе данных - это использование OCI с использованием собственного 7-байтового представления DATE.)
В этом случае функция TO_CHAR вернула идентифицируемую строку, которую я мог бы использовать для определения значения DATE вонки.
Мой вопрос: существует ли более общий или более простой подход (предпочтительно с использованием оператора SQL SELECT) для идентификации строк с «недопустимыми» значениями в столбцах DATE.