Возможно, вы могли бы использовать regexp_like. Я пробовал это для даты выборки, и она, кажется, работает:
select '1/17/2019 12:00:00 AM' as date_str
from dual
where REGEXP_LIKE('1/17/2019 12:00:00 AM',
'^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} [A-Z]{2}')
Если вы хотите проверить все записи, которые не соответствуют формату, вы можете использовать NOT перед regexp_like:
select '1/17/2019 12:00:00 AM' as date_str
from dual
where not REGEXP_LIKE('1/17/2019 12:00:00 AM',
'^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} [A-Z]{2}')
В основном он проверяет следующий формат в строке "01/01/0000 00:00:00 AA"
. 0 обозначает число, A обозначает алфавит, 1 обозначает необязательный номер (поскольку дата и месяц могут состоять из 1 или 2 цифр). Во всех остальных случаях условие не выполнится. Вы можете использовать это, чтобы получить записи, которые не в необходимом формате.
Надеюсь, это поможет.