我有一个'订阅者表'我想查询并在图表中显示结果。
表格中的记录都有自己的'创建的'字段,这是一个日期时间。我希望显示设置时间段的查询结果,例如我想显示以下内容的总新订阅者:
我的图表数据结构并不是我的问题的关键,我只需要一个命名数组,密钥是几天(或几个月),值是总数。
我的问题与实际的SQL查询有关。例如,对于这些日子,我是否需要每天执行1次单个查询,并使用数据时间间隔获取每天的总数,或者是否(我怀疑有)更有效的方法来执行此操作,很明显,我不想仅为3个月的图表做90次查询?
答案 0 :(得分:1)
您可以使用函数TIMESTAMPDIFF()
,例如:
SELECT TIMESTAMPDIFF(DAY, created, NOW()) AS days, COUNT(*) AS num
FROM subscribers
WHERE created > DATE_SUB(NOW(), INTERVAL 3 MONTH)
GROUP BY days
ORDER BY days ASC
我刚刚在200万条记录表上破坏了这个查询,速度很快。
如果您希望在7天,30天,90天等天内爆炸,只需使用PHP即可。