我有一个date_confirmed
字段datetime
。
所以内容的一个例子是
2011-01-03 20:54:41
我根据date_confirmed
从此表中提取最近行而构建的where子句如下...
WHERE DATEDIFF(g.date_confirmed, CURDATE()) <= 28
我在PHP中使用PHP,我想只提取date_confirmed
中的日期少于28天的行。
有人可以帮助我/指出我更好的方向吗?
感谢。
答案 0 :(得分:2)
嗯,你没有说什么不起作用,但我认为你可能打算改变参数:
WHERE DATEDIFF(CURDATE(), g.date_confirmed) <= 28
就像你拥有它一样,CURDATE()
会(我假设)总是比g.date_confirmed
更新,因此DATEDIFF()
会返回一个负数 - 因此总是{{1} }
答案 1 :(得分:0)
我想你会改成:
WHERE DATEDIFF(g.date_confirmed, CURDATE()) <= -28
根据此处的文档(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff),如果第二个参数比第一个参数更新,结果数字将为负数。由于我假设当前日期比你的存储日期更新,我猜这就是这里发生的事情。
答案 2 :(得分:0)
我总是觉得把它写成
更清楚WHERE g.date_confirmed >= DATE_SUB( CURDATE(), INTERVAL 28 DAY )
...特别是在我的记录可能有多个日期列的情况下,我认为这使我更清楚地比较了哪个日期字段。