La función STR_TO_DATE de MySQL no funciona por tiempo

Solo quiero tiempo para comparar con otra cadena de tiempo, así que estoy usando la función STR_TO_DATE para convertir mi cadena de tiempo al formato de fecha y hora

La statement siguiente funciona bien para mí, así que creo que MySQL no tiene ningún problema

 SELECT STR_TO_DATE('26/04/2011', '%d/%m/%Y'); 

Pero no sé por qué debajo de uno no funciona para mí

 SELECT STR_TO_DATE('11:59:59','%h:%i:%s'); 

La sentencia anterior siempre devuelve NULL cuando ejecuto en SQL Console de PhpMyAdmin

Esto es de hecho debido al modo SQL NO_ZERO_DATE . Deberías haberlo visto cuando Anand Rockzz se vinculó al manual, pero ese enlace es solo la mitad de la explicación. A partir de MySQL 5.7.4, la configuración está en desuso. En tu primer ejemplo, estás estableciendo una fecha; en el segundo, NO_ZERO_DATE causa el retorno de NULL porque no está especificando una fecha. A partir de 5.7.8, NO_ZERO_DATE y NO_ZERO_IN_DATE se han incluido con el valor predeterminado de sql_mode. Según el manual , parece que la desactivación y la eliminación se han revertido parcialmente (comenzando con 5.7.8), por lo que es posible que pueda establecer esto explícitamente en my.cnf (o por sesión).

También debe consultar el manual sobre la directiva NO_ZERO_DATE .