Datetime DATE DIFF没有按预期工作



我有一个字段date_confirmed,它是一个datetime

内容的一个例子是

2011-01-03 20:54:41

我构建的where子句基于date_confirmed从这个表中提取最近的行,如下所示:

WHERE DATEDIFF(g.date_confirmed, CURDATE()) <= 28

我正在使用PHP MySQL,我只想提取date_confirmed中日期小于28天的行。

谁能帮我/给我指个好一点的方向?

谢谢。

好吧,你没有说什么不工作,但我认为你可能是想改变参数:

WHERE DATEDIFF(CURDATE(), g.date_confirmed) <= 28

正如您所拥有的,CURDATE()将(我假设)总是比g.date_confirmed更近,因此DATEDIFF()将始终返回一个负数-因此始终是<= 28

我想你应该改成:

WHERE DATEDIFF(g.date_confirmed, CURDATE()) <= -28

根据这里的文档(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff),如果第二个参数比第一个参数更近,则结果数字将为负。因为我假设当前日期比您存储的日期更近,所以我猜这就是这里发生的事情。

我总觉得这样写更清楚。

WHERE g.date_confirmed >= DATE_SUB( CURDATE(), INTERVAL 28 DAY )

…特别是在我的记录可能有几个日期列,我认为这使得它更清楚,我比较哪个日期字段

最新更新