Las versiones de MyQSL posteriores a 5.0.x suelen hacer que los datos se devuelvan en formato binario, por lo que lo que te pasa puede estar originado allí.
Para evitar eso una forma simple es usar CAST() y formatearlo correctamente.
Además de eso, estás usando una función demasiado complicada, por cuanto para lograr lo que quieres sólo necesitas usar DATE_FORMAT y no hacerlo tan complicado.
Probemos así: