按日期对时间戳字段进行分组

时间:2013-03-12 01:54:45

标签: mysql sql

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

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

这工作了一天,它返回一行名为count的行,其中包含过去24小时内提交的链接数。我需要更改它以返回名为datecount的2列,其中包含7行(每天一行)。

我无法理解的棘手问题是createdtimestamp列,我无法更改它,所以我必须工作用它。

编辑:正在进行查询:

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

1 个答案:

答案 0 :(得分:2)

NOW()实际上不应该正常工作,因为它返回datetime。另外,如果您想要获取7天的数据,则需要从604800中减去UNIX_TIMESTAMP()。您可以将datetime函数与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()

See the demo