0

我正在尝试编写一个 SQL 查询来返回在过去 7 天内提交到我的网站的链接数量。到目前为止,我有这个:

SELECT COUNT(`id`) AS `count`
FROM `links`
WHERE `created` > NOW() - 86400
AND `created` < NOW()

这工作一天,它返回一行调用count了过去 24 小时内提交的链接数。我需要将其更改为返回 2 列称为dateand count,有 7 行(每天一行)。

我无法理解的棘手部分是它created是一个timestamp列,我无权更改它,所以我必须使用它。

编辑:查询正在进行中:

SELECT DAY(FROM_UNIXTIME(created)) AS day, COUNT(id) count
FROM links
GROUP BY DAY(FROM_UNIXTIME(created))
LIMIT 7
4

1 回答 1

2

NOW()实际上不应该工作,因为它返回一个datetime. 此外,如果您想获取 7 天的数据,您需要604800UNIX_TIMESTAMP(). 您可以将 thendatetime函数与FROM_UNIXTIME. 这将使分组更容易。最佳情况下,您的列应该是datetime类型。

它会是这样的:

SELECT DAY(FROM_UNIXTIME(created)) day, COUNT(id) count
FROM links
WHERE created > UNIX_TIMESTAMP() - 604800 AND created < UNIX_TIMESTAMP()
GROUP BY DAY(FROM_UNIXTIME(created))

您也可以使用BETWEEN运算符:

WHERE created BETWEEN UNIX_TIMESTAMP() - 604800 AND UNIX_TIMESTAMP()

查看演示

于 2013-03-12T01:58:18.553 回答