Я работаю с некоторыми данными в базе данных Oracle 10g, в частности с массовым обновлением и чтением информации о метках времени. Мне пришлось конвертировать из формата MM/DD/YYYY HH24:MI:SS
в формат YYYY-MM-DD HH24:MI:SS
из-за требований бизнеса. Кроме того, временная метка хранится как VARCHAR
вместо собственной даты-времени из-за требований бизнеса.
К сожалению, теперь у меня проблемы с запуском операций выбора для моих данных.
В частности, при выполнении следующего выбора я получаю ORA-01861: литерал не соответствует строке формата:
SELECT datetime_stamp
from entrytable
where
to_date(datetime_stamp, 'YYYY-MM-DD HH24:MI:SS')
between
TO_DATE('11/27/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
and
TO_DATE('12/06/2011 23:59:59', 'MM/DD/YYYY HH24:MI:SS')
and rownum < 1000
Я подтвердил, что неверным аргументом является to_date (datetime_stamp, 'YYYY-MM-DD HH24: MI: SS'), но теперь у меня есть 400 тысяч строк данных для анализа, чтобы попытаться найти плохую строку.
Можно ли как-нибудь заставить Oracle вернуть строку, которая генерирует ошибку ORA-01861?
Я пытался использовать REGEXP_LIKE, чтобы найти данные, которые не соответствуют [0-9] [0-9] [0-9] [0-9] - [0-9] [0-9] - [0 -9] [0-9] [0-9] [0-9]: [0-9] [0-9]: [0-9] [0-9], но все строки соответствуют этому регулярному выражению .