Há um truque para detectar uma data válida no página de manual . Você pode usá-lo para determinar se um
STR_TO_DATE
formato funcionou. select foo,
case when length(date(str_to_date(foo,"%Y-%m-%d %H:%i:%S"))) is not null then str_to_date(foo,"%Y-%m-%d %H:%i:%S")
when length(date(str_to_date(foo,"%b %d %Y %h:%i%p"))) is not null then str_to_date(foo,"%b %d %Y %h:%i%p")
end as newdate
from my_table
Coloque um formato para todos que você espera. Teste como um louco.
Boa sorte.
(Ah, e parabéns por tentar limpar um esquema ruim!)