通常,您可以使用以下方法在MySQL中生成一系列N个整数:
select (@i:=@i+1)-1 as `myval` from sometable,(SELECt @i:=0) gen_sub limit N
请注意,您联接的表(sometable)必须至少具有N行。 上面的-1是使它的基数为零…删除它,对于N = 3,您将得到1,2,3。
您可以将这些整数输入DATE_ADD函数,以将其转换为一系列日期。为了更容易理解,我们在日期中使用一些用户变量。
SET @date_min = '2016-03-04';SET @date_max = '2016-03-10';select DATE_ADD(@date_min, INTERVAL (@i:=@i+1)-1 DAY) as `date`from information_schema.columns,(SELECt @i:=0) gen_subwhere DATE_ADD(@date_min,INTERVAL @i DAY) BETWEEN @date_min AND @date_max
这将返回这些日期以及它们之间每天的行。现在只需要对您的表进行连接即可…因为我没有您的数据库结构,所以我没有尝试过,但是类似以下的方法应该可以工作:
SET @date_min = '2016-03-04';SET @date_max = '2016-03-10';SELECT date_generator.date, ifnull(SUM(val1),0) as sum_valfrom ( select DATE_ADD(@date_min, INTERVAL (@i:=@i+1)-1 DAY) as `date` from information_schema.columns,(SELECT @i:=0) gen_sub where DATE_ADD(@date_min,INTERVAL @i DAY) BETWEEN @date_min AND @date_max) date_generatorleft join table1 on table1.date = date_generator.dateGROUP BY date;



