选择从过去7天查看的顶部

时间:2009-07-25 22:11:45

标签: mysql select

我有一张带有日期戳E.g(1241037505)的表格。还有一个包含观看次数的列。

数据标记在创建时类似。

所以我想选择上周查看过的热门话题。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

试试这个:

SELECT * WHERE
DATEDIFF(NOW(),created_date) < 7

答案 1 :(得分:1)

SELECT * FROM table WHERE createdon > SUBDATE(NOW(), '7 day') ORDER BY hits DESC;

请参阅:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_subdate

答案 2 :(得分:1)

您当前正在跟踪的数据不允许您选择上周查看的顶部。它将显示您在过去一周内查看过的最高级别或最常查看的项目。如果两周前创建了某些内容,但在上周查看的内容比其他内容更多,则无法根据您正在跟踪的数据来确定。我可以看到的一种方法是跟踪每个内容项目在一周中每天获得的点击次数。

create table daily_hits {
    cid integer, -- content id points to the table you already have
    dotw smallint, -- 0-6 or similar
    hits integer
    PRIMARY KEY (cid, dotw)
}

每当您增加内容项的点击次数时,您还会更新给定内容ID和星期几的daily_hits表。您需要一个将当前日期/时间转换为星期几的函数。为此,MySql提供了DAYOFWEEK

要获得上周查看次数最多,您可以这样查询:

SELECT cid,SUM(hits)FROM daily_hits GROUP BY cid ORDER BY SUM(hits)DESC

您需要某种类型的预定作业,以便在午夜删除当周的当天,这样您就不会永远累积,并且基本上会在当前表的点击列上执行相同的累积。

答案 3 :(得分:0)

SELECT * FROM table WHERE Date_Created > (7 days ago value) ORDER BY Hits LIMIT 0,100

或者你可以使用它(根据WishCow的答案)

SELECT * FROM table WHERE Date_Created > SUBDATE(NOW(), '7 day') ORDER BY Hits LIMIT 0,100