Możesz przetestować format za pomocą wyrażenia regularnego.
Byłoby to coś takiego:
select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}')
To działa dobrze. Sprawdza, czy format to „numer 4-cyfrowy / numer 2-cyfrowy / numer 2-cyfrowy”. Możesz chcieć czegoś mocniejszego, takiego jak:
select dates
from tbl
where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}') or
(substr(dates, 1, 4) not between '1900' and '2014' or
substr(dates, 6, 2) not between '01' and '12'
substr(dates, 9, 2) not between '01' and '31'
)
To sprawdza format i rozsądne wartości w każdej kolumnie. Oczywiście nie sprawdza stanu na 31 czerwca, ale wykryje wiele błędów.