Echarts统计日期处理问题

在做Echarts统计图的时候遇到一个问题,我们做Echarts图很多时候X轴需要显示日期,Y轴要显示对应的数据。
假如表里有个time字段, 我一般想到的是根据时间去分组并查询count的值。但是我经常会遇到一种情况,就是假如我要查询1号到20号的数据量,其中可能会有那么几天没有数据。例如:

img

img


如图所示,1到20号只有6、7号两天有数据,但是Echarts图上需要显示1到20号的日期,由于本人sql能力较差,一般我都是先这样分组查出来,然后再根据这个集合转Map,日期作为key,count的值作为value,再使用Hutools的DateUtil.rangeToList方法获取1到20号的日期,
然后遍历1到20号的日期判断Map的key,存在去map中取值不存在为0,虽然效果能实现,但是感觉做的十分的繁琐,请问各位,能不能直接通过sql实现这个效果或者其他更好的办法

什么数据库呢?意思就是需要查询出每一天,然后关联你的查询结果,查询每一天
oracle简单,直接 使用CONNECT BY 就行,根据ROWNUM控制查多少天数据

 select date '2023-6-1' +ROWNUM-1 from dual CONNECT BY ROWNUM <=32;

img


mysql 应该麻烦些 ,

    SELECT
        date_add(DATE_ADD(curdate(), INTERVAL - DAY(curdate()) + 2 DAY),
        INTERVAL (cast( help_topic_id AS signed INTEGER ) - 1 ) DAY 
        ) DAY 
    FROM
        mysql.help_topic 
    WHERE
        help_topic_id < DAY ( last_day( curdate( ) ) ) 
    ORDER BY
        help_topic_id

img


sql server 这里也有 http://t.csdn.cn/yaQLW

img

不是什么问题都要靠数据库解决
你循环一下,利用datetime做日期加法,再转字符串,放进map里,再用数据库查询出来的对它进行填充