Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP - Verwenden von STR_TO_DATE aktualisiert die datetime-Spalte, aber es wird ein leerer Datensatz wie 0000-00-00 00:00:00 aktualisiert

Das Problem liegt beim Format %h:%i:%s

Hier, was in mysql passiert

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                                                   |
+--------------------------------------------------------+

Es gibt also NULL zurück und beim Einfügen geht es nicht, also müssen Sie das Format %H:%i:%s verwenden

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                                    |
+--------------------------------------------------------+

Für 10-09-1985 01:00:00 das Datumsformat ist gültig mit %h:%i:%s es funktioniert also.

Wählen Sie besser das Datumsformat Y-m-d H:i:s sogar mit den Eingabedaten, seit 10-09-1985 01:00:00 sagt nicht aus, ob es AM oder PM ist, und spätere Datumsberechnungen werden sehr schwierig.