Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP - używanie STR_TO_DATE aktualizuje kolumnę datetime, ale aktualizowany jest pusty rekord, np. 0000-00-00 00:00:00

Problem ma format %h:%i:%s

Oto co dzieje się w 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                                                   |
+--------------------------------------------------------+

Więc zwraca NULL, a po wstawieniu nie działa, więc musisz użyć formatu %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                                    |
+--------------------------------------------------------+

Dla 10-09-1985 01:00:00 format daty jest poprawny z %h:%i:%s więc to działa.

Lepiej wybrać format daty Y-m-d H:i:s nawet z datami wejściowymi, ponieważ 10-09-1985 01:00:00 nie mówi, czy jej rano lub po południu, a później obliczenia daty stają się bardzo trudne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać wartości na każdy dzień miesiąca?

  2. utf8 zniekształcony podczas importowania do mysql

  3. MySQL przy aktualizacji zduplikowanych kluczy

  4. Licznik przyrostów MySQL SELECT

  5. Jak zaimplementować pesymistyczne blokowanie w aplikacji webowej php/mysql?