假设我想获得过去 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)
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top