我通常可以做到这一点,但看起来我的大脑现在运作不正常而且我错过了一些东西。
每天通过凌晨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 :(
有什么想法吗?
答案 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
,您应该选择范围。