Hola Miguel:
Aquí vale hacer una aclaración: en MySQL y en casi la mayoría (si no es que en todos) los manejadores de BD's, el formato para almacenar fechas sigue el formato ANSI, es decir (YYYY-MM-DD HH24:MI:SS). pero son dos cosas muy distintas cómo almacenas tus datos y como LOS PRESENTAS. La capa de presentación es independiente de la capa de almacenamiento, ¿qué quiere decir esto? que no de debes preocupar por como almacenas las fechas, sino que te ocupas de cómo presentas los datos:
Ahora bien, si tienes un cadena con el formato DD/MM/YYYY y quieres almacenarlo en un campo tipo DATE, entonces utilizas la función STR_TO_DATE:
Observa que el resultado de la función STR_TO_DATE pone la fecha en formato ANSI, PORQUE ASÍ ES COMO SE TIENE QUE ALMACENAR, NO PUEDES CAMBIAR LA FORMA EN CÓMO SE ALMACENA EL DATO.
Para MOSTRAR la fecha en el formato que quieras, entonces sí utilizas DATE_FORMAT:
Entonces, para insertar una fecha, lo puedes hacer de tres formas distintas:
1. Utilizando una función que te refrese una fecha en formato ANSI (como por ejemplo la función NOW):
2. Poniendo una cadena en formato ANSI (no es necesario realizar ninguna conversión)
3. Utilizando la función STR_TO_DATE para convertir una cadena con un formato distinto al ANSI a una fecha válida:
De las tres formas se almacena correctamente la fecha INSISTO, SE ALMACENA EN FORMATO ANSI:
Para MOSTRAR las fechas en el formato que quieres, entonces utilizas DATE_FORMAT:
Saludos
Leo.