sql >> Database teknologi >  >> RDS >> Mysql

PHP - bruger STR_TO_DATE opdatering dato og klokkeslæt kolonne, men den er opdateret tom post som 0000-00-00 00:00:00

Problemet er med formatet %h:%i:%s

Her, hvad der sker i 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                                                   |
+--------------------------------------------------------+

Så det returnerer NULL og indsætter det, det går ikke, så du skal bruge formatet %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                                    |
+--------------------------------------------------------+

Til 10-09-1985 01:00:00 datoformatet er gyldigt med %h:%i:%s så det virker.

Det er bedre at vælge datoformatet Y-m-d H:i:s selv med inputdatoer, siden 10-09-1985 01:00:00 fortæller ikke, om dens AM eller PM og senere at lave datoberegninger bliver meget vanskelige.



  1. Sådan defineres en brugerdefineret ORDER BY order i mySQL

  2. Oracle SQL-erklæring i java

  3. Postgresql transaktionshåndtering med java

  4. Django Query Natural Sort