一尘不染

在mysql中创建日期范围

mysql

动态创建日期范围以便与报表配合使用的最佳方法。

因此,如果给定的一天没有活动,我可以避免报表上的空行。

通常是为了避免此问题:在sql结果中(在mysql或perl端)填充空日期的最直接方法是什么?


阅读 378

收藏
2020-05-17

共1个答案

一尘不染

在MySQL中,没有直接的方法可以做到这一点。最好的选择是用您选择的服务器端语言生成一个daterange数组,然后从数据库中提取数据,并使用date作为键将结果数组与daterange数组合并。

您使用哪种服务器端语言?

编辑:

基本上,您将要做的是(伪代码):

// Create an array with all dates for a given range
dates = makeRange(startDate, endDate);

getData = mysqlQuery('SELECT date, x, y, z FROM a WHERE a AND b AND c');

while (r = fetchRowArray(getData)) {

  dates[ date(r['date']) ] = Array ( x, y, z);

}

您最终将获得一系列可以循环浏览的日期,以及具有或不具有活动数据的日期。

可以轻松修改以按小时分组/过滤数据。

2020-05-17