sql >> Databasteknik >  >> RDS >> Mysql

PHP - använder STR_TO_DATE uppdatera datetime-kolumnen men den är uppdaterad tom post som 0000-00-00 00:00:00

Problemet är formatet %h:%i:%s

Här är vad som händer 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å den returnerar NULL och infogningen går inte, så du måste använda 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                                    |
+--------------------------------------------------------+

För 10-09-1985 01:00:00 datumformatet är giltigt med %h:%i:%s så det fungerar.

Det är bättre att välja datumformatet Y-m-d H:i:s även med inmatningsdatum, sedan 10-09-1985 01:00:00 berättar inte om det är förmiddag eller eftermiddag och senare att göra datumberäkningar blir mycket svårt.



  1. Vad är det rätta sättet att räkna artikelkommentarer, träffar och likes i ett artikelindex?

  2. Är ordning i en underfråga garanterad att bevaras?

  3. Mysqldump' känns inte igen som ett internt eller externt kommandoprogram eller batchfil

  4. mysqli och mysql infoga i databaskommandon