无效的日期时间格式:1292错误的日期时间值。

24

当我试图更新一个带有日期时间字段的表时,出现以下错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[2007]: Invalid datetime format: 1292 Incorrect datetime value: '02-27-2017 16:37' for column lastupated

我的PHP代码使用PDO。

$lastupdated = date('m-d-Y H:i:s');
$run = $conn->prepare($sql);
$run->bindParam(':lastupdated', $lastupdated, PDO::PARAM_STR); 

SQL中的lastupdated数据类型为datetime

现有数据

enter image description here


5
日期格式显然有误,正确的应该是年-月-日。 - baao
3
使用 date('Y-m-d H:i:s') - Tim Biegeleisen
3
date('Y-m-d H:i:s'); - Dhruv Saxena
1个回答

55

为了使用MySQL的datetime字段,您需要将日期格式化为"Y-m-d H:i:s"

例如:

$lastupdated = date('Y-m-d H:i:s');

文档中:

DATETIME类型用于包含日期和时间部分的值。MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。


3
根据文档:日期部分之间可以使用任何标点符号作为定界符。但是真正的问题在于他对日期部分的排序。 - Tim Biegeleisen
谢谢 @TimBiegeleisen。我不知道那个。 - JazZ
1
我也没有。而且我很高兴没有人真的使用“2017@02@28”作为日期字面量 :-) - Tim Biegeleisen
@TimBiegeleisen 和 Jazz,感谢你们的帮助,它起作用了。 - user580950
@TimBiegeleisen 当然。我过去常常写日期格式为2017/02/28。这会很有用! - JazZ
不客气,@user580950。如果我的回答解决了你的问题,感谢你的验证。祝你好运。=) - JazZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接