[英]Display rows from MySQL where a datetime is within the next hour
我总是遇到复杂的SQL查询问题。
这就是我所拥有的
$query = '
SELECT id,
name,
info,
date_time
FROM acms_events
WHERE date_time = DATE_SUB(NOW(), INTERVAL 1 HOUR)
AND active = 1
ORDER BY date_time ASC
LIMIT 6
';
我想在一小时内获得最多6行。 我的查询错了吗? 当我测试时,它似乎没有在接下来的一小时内发布即将发生的事件。
这个的正确语法是什么?
我将假设你正在查看一组包含一系列DATETIME值的记录,所以你可能想要更像这样的东西:
SELECT id,
name,
info,
date_time
FROM acms_events
WHERE date_time < DATE_ADD(NOW(), INTERVAL 1 HOUR)
AND date_time >= NOW()
AND active = 1
ORDER BY date_time ASC
LIMIT 6
否则,您的查询正在查找date_time 恰好为 “now + 1 hour”的记录。 我假设您的所有日期都不是特定的日期。 ;)
为了澄清一点, DATE_ADD()
和DATE_SUB()
返回确切的时间戳,因此上面的查询大致转换为SELECT ... WHERE date_time = '2010-04-14 23:10:05' ORDER BY ...
,我认为不是你想要的。
WHERE date_time = DATE_SUB(NOW(), INTERVAL 1 HOUR)
表示date_time恰好等于现在减去一个小时,这将导致任何记录恰好一个小时。
为什么不用
WHERE TIMEDIFF(date_time, NOW()) < '01:00:00'
AND date_time > NOW()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.