PHP MySQL查询在过去24小时内最受欢迎

时间:2010-07-14 06:00:32

标签: php mysql datetime ranking popularity

假设我想在过去24小时内获得MOST喜欢的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参考:date(“c”);

4 个答案:

答案 0 :(得分:20)

WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)

答案 1 :(得分:2)

如果date_created字段是日期时间或时间戳字段类型,则可以在where子句中使用DATE_SUB,如下所示;


WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)

答案 2 :(得分:1)

您应该使用日期/时间功能,而不是LIKE。

WHERE date_created >= (NOW() - INTERVAL 24 HOUR)

答案 3 :(得分:1)

因此,首先应将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

除非你说得很开心并希望我给出确切的语法,否则我会把这个做什么留给读者做练习。