检索每日&来自MySQL的每月总计用于图表

时间:2014-10-03 10:11:11

标签: php mysql datetime chart.js

我有一个'订阅者表'我想查询并在图表中显示结果。

表格中的记录都有自己的'创建的'字段,这是一个日期时间。我希望显示设置时间段的查询结果,例如我想显示以下内容的总新订阅者:

  1. 过去7天,每天总计。
  2. 过去30天,每天总计。
  3. 过去90天,每天总计。
  4. 过去12个月,每月总计。
  5. 我的图表数据结构并不是我的问题的关键,我只需要一个命名数组,密钥是几天(或几个月),值是总数。

    我的问题与实际的SQL查询有关。例如,对于这些日子,我是否需要每天执行1次单个查询,并使用数据时间间隔获取每天的总数,或者是否(我怀疑有)更有效的方法来执行此操作,很明显,我不想仅为3个月的图表做90次查询?

1 个答案:

答案 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即可。