Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP - usando a coluna de data e hora de atualização STR_TO_DATE, mas é atualizado o registro vazio como 0000-00-00 00:00:00


O problema é com o formato %h:%i:%s

Aqui o que acontece no 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                                                   |
+--------------------------------------------------------+

Então está retornando NULL e na inserção não vai, então você precisa usar o 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 o formato de data é válido com %h:%i:%s então está funcionando.

É melhor escolher o formato de data Y-m-d H:i:s mesmo com as datas de entrada, pois 10-09-1985 01:00:00 não diz se é AM ou PM e depois fazer cálculos de data se tornam muito difíceis.