Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP - en utilisant la colonne datetime de mise à jour STR_TO_DATE mais c'est un enregistrement vide mis à jour comme 0000-00-00 00:00:00

Le problème est avec le format %h:%i:%s

Voici ce qui se passe dans 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                                                   |
+--------------------------------------------------------+

Donc, il renvoie NULL et lors de l'insertion, il ne va pas, vous devez donc utiliser le format %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                                    |
+--------------------------------------------------------+

Pour 10-09-1985 01:00:00 le format de date est valide avec %h:%i:%s donc ça marche.

Il est préférable de choisir le format de date Y-m-d H:i:s même avec les dates d'entrée, depuis 10-09-1985 01:00:00 ne dit pas si son AM ou PM et plus tard faire des calculs de date devient très difficile.