试图选择昨天插入的mysql行数

时间:2011-06-27 10:58:09

标签: mysql

我通常可以做到这一点,但看起来我的大脑现在运作不正常而且我错过了一些东西。

每天通过凌晨1点运行的cron作业,我希望获得昨天插入的行数日期

 SELECT DATE(added) as date, COUNT(*) FROM bookings WHERE added = DATE_SUB(NOW(), INTERVAL 1 DAY) GROUP BY date

'added'包含时间戳,即'2011-04-18 12:31:31'

我在这里弄错了什么?我知道昨天添加了很多行,但我的查询返回0结果而没有mysql_errors :(

有什么想法吗?

3 个答案:

答案 0 :(得分:11)

请尝试

SELECT DATE(added) as yesterday, COUNT(*) FROM bookings WHERE DATE(added) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY)) GROUP BY yesterday

或者

SELECT DATE(added) as yesterday, COUNT(*) FROM bookings WHERE DATE(added) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) GROUP BY yesterday

<强>更新 更正了WHERE部分。

答案 1 :(得分:2)

不管NOW()是什么,都会返回时间部分,除非它们在它们不被计算的前一天恰好被添加。

因此要么使用BETWEEN并指定时间范围,要么将查询中的日期格式化为仅匹配日月份组件而不是时间

答案 2 :(得分:0)

WHERE added =仅匹配确切的NOW() - 1 DAY,您应该选择范围。