sql >> Base de Datos >  >> RDS >> Mysql

PHP:usa STR_TO_DATE para actualizar la columna de fecha y hora, pero se actualiza un registro vacío como 0000-00-00 00:00:00

El problema es con el formato %h:%i:%s

Aquí lo que sucede en mysql

mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s');
+--------------------------------------------------------+
| str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s') |
+--------------------------------------------------------+
| NULL                                                   |
+--------------------------------------------------------+

Por lo tanto, devuelve NULL y al insertar no funciona, por lo que debe usar el formato %H:%i:%s

mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %H:%i:%s');
+--------------------------------------------------------+
| str_to_date('10-09-1985 00:00:00','%d-%m-%Y %H:%i:%s') |
+--------------------------------------------------------+
| 1985-09-10 00:00:00                                    |
+--------------------------------------------------------+

Para 10-09-1985 01:00:00 el formato de fecha es válido con %h:%i:%s así que está funcionando.

Es mejor elegir el formato de fecha Y-m-d H:i:s incluso con las fechas de entrada, desde 10-09-1985 01:00:00 no dice si es AM o PM y luego hacer los cálculos de fechas se vuelve muy difícil.