Има трик за откриване на валидна дата на man страница
. Можете да го използвате, за да определите дали STR_TO_DATE
форматът работи.
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
Поставете един формат за всички, които очаквате. Тествайте като луд.
Успех.
(О, и поздравления за опита да изчистите лоша схема!)