Vấn đề là với định dạng %h:%i:%s
Đây là những gì xảy ra trong 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 |
+--------------------------------------------------------+
Vì vậy, NULL trả về và khi chèn nó sẽ không hoạt động, vì vậy bạn cần sử dụng định dạng %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 |
+--------------------------------------------------------+
Đối với 10-09-1985 01:00:00
định dạng ngày hợp lệ với %h:%i:%s
vì vậy nó hoạt động.
Tốt hơn là chọn định dạng ngày Y-m-d H:i:s
ngay cả với ngày nhập, kể từ 10-09-1985 01:00:00
không cho biết liệu AM hay PM của nó và việc tính toán ngày sau đó trở nên rất khó khăn.