I have a table with a string column (varchar(200)) that contain a date in different format. For example
may 24 1983 12:00AM
1981-01-13 00:00:00
1979
There's a trick for detecting a valid date on the man page. You can use it to determine whether a STR_TO_DATE
format worked.
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
Put one format for everyone you're expecting. Test like crazy.
Good luck.
(Oh, and congrats for trying to cleanup a bad schema!)