我正在尝试编写一个SQL查询,以返回在过去7天内向我的网站提交了多少链接。到目前为止,我有这个:
SELECT COUNT(`id`) AS `count`
FROM `links`
WHERE `created` > NOW() - 86400
AND `created` < NOW()
这工作了一天,它返回一行名为count
的行,其中包含过去24小时内提交的链接数。我需要更改它以返回名为date
和count
的2列,其中包含7行(每天一行)。
我无法理解的棘手问题是created
是timestamp
列,我无法更改它,所以我必须工作用它。
编辑:正在进行查询:
SELECT DAY(FROM_UNIXTIME(created)) AS day, COUNT(id) count
FROM links
GROUP BY DAY(FROM_UNIXTIME(created))
LIMIT 7
答案 0 :(得分:2)
NOW()
实际上不应该正常工作,因为它返回datetime
。另外,如果您想要获取7天的数据,则需要从604800
中减去UNIX_TIMESTAMP()
。您可以将date
和time
函数与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()