Dates changed to 0000-00-00
Well, usually I use the following approach: instead of altering a live column type (if it's not something really trivial), I add another column of a new type, then set all the values in it (more on it below), then delete the old column after doing all that (and checking that all works ok), using its name as a name for a new column.

Perhaps this approach can still be used. To convert old values use something like this:

UPDATE my_table 
   SET datetime_column = STR_TO_DATE(varchar_column, '%d-%m-%Y')


Please take note that actual format literal might be different in your case; consult the manual and test it for some exact value to be sure.