Eso es lo mejor. Evitarás problemas a futuro.
Te comento: Te pone 0000-00-00 como fecha cuando cambias el tipo de datos simplemente porque el dato que ya contiene ese campo esta de entada mal escrito.
¿Probaste la consulta tal como te la propuse? Debería haber funcionado.
Haz lo siguiente:
Crea un campo de tipo DATETIME en la misma tabla:
Actualiza el campo, para no perder los datos viejos:
Prueba los datos:
Si algún campo contiene NULL o "0000-00-00", es porque en ese registro la fecha estaba mal escrita y deberás ingresarlos a mano.
Si todo va bien,
Fijate tu mismo si lo que debe ir es DATE o DATETIME. En el segundo caso el patron del STR_TO_DATE debe ser: