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.