PHP-使用STR#u TO#u DATE update datetime列,但它';已更新的空记录,如;0000-00-00:00:00”;
记录更新为空的reg_date_time=“0000-00-00:00:00” 如果PHP-使用STR#u TO#u DATE update datetime列,但它';已更新的空记录,如;0000-00-00:00:00”;,php,mysql,sql,datetime,Php,Mysql,Sql,Datetime,记录更新为空的reg_date_time=“0000-00-00:00:00” 如果 只有当注册表日期包含小时值时,记录才会正确更新。您设置了错误的日期格式和错误的引号: $reg_date ="10-09-1985 01:00:00" 问题在于格式%h:%i:%s mysql> select str_to_date('10-09-1985 00:00:00','%d-%m-%Y %h:%i:%s'); +----------------------------------------
只有当注册表日期包含小时值时,记录才会正确更新。您设置了错误的日期格式和错误的引号:
$reg_date ="10-09-1985 01:00:00"
问题在于格式
%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') |
+--------------------------------------------------------+
| NULL |
+--------------------------------------------------------+
下面是mysql中发生的事情
$query = "UPDATE User
SET reg_date_time = STR_TO_DATE('".$reg_date."','%Y-%m-%d %h:%i:%s'),
WHERE pk_item = '$id'";
因此,它返回NULL并在插入时不继续,因此您需要使用格式%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') |
+--------------------------------------------------------+
| NULL |
+--------------------------------------------------------+
对于10-09-1985 01:00:00
而言,日期格式在%h:%i:%s时有效,因此其工作正常
最好选择日期格式Y-m-d H:i:s
,即使输入日期也是如此,因为10-09-1985 01:00:00
无法判断其上午或下午以及以后的日期计算变得非常困难 我得到解析错误:语法错误,意外的“$query”(T_变量)
与您的代码:-?我使用了您的日期格式它对我不起作用它在更新列中给我“0000-00-00:00:00”值
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 |
+--------------------------------------------------------+