过去 24 小时内最流行的 PHP MySQL 查询
-
15-09-2020 - |
题
假设我想获得过去 24 小时内点赞最多的 10 条记录。这是我到目前为止所拥有的:
$date = date("o-m-d");
$query = "SELECT date_created,COUNT(to),from,to FROM likes WHERE date_created LIKE '$date%' GROUP BY to ORDER BY COUNT(to) DESC LIMIT 10";
问题在于 的一点是,它只会从那天起获得最多的喜欢,无论距离那一天有多远。过去 24 小时内它没有获得最多点赞。
喜欢的结构: 来自|到| date_created | ID
日期采用标准 ISO 时间 - 例如 2010-07-14T00:35:31-04:00。直接来自 PHP 参考:日期(“c”);
解决方案
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
. 其他提示
如果您的date_created字段是DateTime或Timestamp字段类型,则可以在Where子句中使用DATE_SUB,如下所示;
WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)
. 所以首先 date_created 应该定义为带有 on 的时间戳 default current timestamp
. 。如果表中也有 date_modified 那么 date_modified 将具有 on update current timestamp
您可以将创建的日期定义为时间戳,并使用此触发器来更新它
CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()
现在我们有了时间戳,您可以轻松地将一些 mysql 日期函数应用到该列。
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
我将把要做的事情留给读者作为练习,除非你说“非常请”并希望我给出确切的语法。
您应该使用日期/时间函数,而不是类似。
WHERE date_created >= (NOW() - INTERVAL 24 HOUR)
. 不隶属于 StackOverflow