【问题标题】:Retrieving daily & monthly totals from MySQL for use in a chart从 MySQL 检索每日和每月总计以用于图表
【发布时间】:2014-10-03 10:11:10
【问题描述】:

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

表中的记录都有自己的“created”字段,即日期时间。我希望显示设定时间段的查询结果,例如我想显示以下的新订阅者总数:

  1. 过去 7 天,每天总计。
  2. 过去 30 天,每天总计。
  3. 过去 90 天,每天总计。
  4. 过去 12 个月,每月总计。

我的图表数据结构并不是我问题的关键,我只需要一个命名数组,键是天(或月),值是总数。

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

【问题讨论】:

    标签: php mysql datetime chart.js


    【解决方案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 即可。

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多