Oracle 10.2.0.5Как определить недействительные (испорченные) значения, сохраненные в DATE столбцах Oracle
Что это самый простой способ для идентификации строк в таблице, которые имеют «неправильные» значения в столбцах 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.
Вы можете выбрать все даты не в пределах допустимого диапазона? – ProfessionalAmateur
Там была * ошибка в более ранних версиях Oracle (9.x?), Которая позволяла делиться на нуль значений INTERVAL, чтобы их можно было обнаружить и получить недопустимые значения. –
Как вам удалось попасть в базу данных в первую очередь? –