按日期有效地绘制数据图表

时间:2015-06-21 08:19:45

标签: php mysql date

我想在时间序列折线图上显示用户输入的信息。 ChartJS似乎是一个很好的自由方式来做到这一点。它需要一个日期数组,以及这些日期的值数组。

假设用户要求两个日期之间的数据,并按日分组。

在我的数据库中,我有一个表,每行都有一个UNIX时间戳。我可以在给定的日期轻松调用数据和分组,例如

SELECT some_metric 
FROM tbl_example 
WHERE date BETWEEN [start_ts] AND [end_ts] 
GROUP BY DAY(FROM_UNIXTIME(date))

我还有一个函数可以生成两个日期之间的日期数组。

现在问题是用户在某些日子里没有数据,所以我需要修改MySQL吐出的数组,以便有些日子有0。

除了两个阵列中可怕的双嵌套foreach交叉检查日期之外,是否有一种有效的方法来修复MySQL或PHP中的数据空白?

更新:This似乎是处理JavaScript方面时间序列数据差距的可能解决方案。

更新:我想出了一个相对简单的20行PHP解决方案。它重新格式化MySQL吐出的值数组,并且对于每个日期执行if (isset(...))检查该数组,然后为该日期添加0。

到目前为止,它已经完成了几天的工作,但是我需要深入研究它能够工作数周和数月。

1 个答案:

答案 0 :(得分:2)

我建议使用此方法为start_tsend_ts之间的日期生成值:

Get a list of dates between two dates

然后UNION与您的结果。

这样可以省去在php ...

中迭代结果的麻烦

如果您在SUM上使用某些汇总(例如COUNTsome_metric),则可以生成一个名为some_metric的新字段,其中包含生成的日期,NULL 1}}或0值,无论这些日期的记录是否存在,聚合都是有效的。