Desde (alrededor de) PHP 5.2, PHP ha incorporado una clase/objeto para manejar fechas y horas, llamado DateTime . En un vacío, siempre es mejor usar un integrado que lidiar con los detalles desordenados por tu cuenta.
El constructor DateTime (o la función date_create) acepta una fecha en cualquier formato entendido por strToTime. Todo lo que necesita saber acerca de strToTime es su vudú mágico que reconocerá correctamente una fecha en casi cualquier formato de cadena. Cuando me encontré por primera vez con strToTime, tuve la misma reacción interna que tienes ahora ("eso es una tontería/parece poco fiable"). No es. Simplemente funciona de una manera que su frágil comprensión de las fechas nunca lo hará (y si cree que entiende las fechas, no es así. Créame).
Por lo tanto, extraiga la información de MySQL como una cadena de fecha/hora e inmediatamente cree un objeto de fecha de PHP. Usa el método date_format (con algunas constantes prácticas ) cuando/si necesita la fecha nuevamente como una cadena.