mysql查询数据的时候,怎么把缺少的日期补齐

1.新的业务需求 查询进近年的数据,但是数据不是连贯的 我需要把每天的日期给补齐。
2.近七天,近十四天都是使用 UNION ALL 进行书写的 但是半年的数据太多,不可能都是UNION ALL,所以想问问各位,有没有什么好的方法。

手工建立所有日期列表 , 然后join 一下?

关联一张日期的虚拟表

1、select to_date('2022-01-01','yyyy-mm-dd')+level-1 from dual connect by level<=365 --创建2022年365天的日期表,注意字段名设置一下
2、把日期表和你的业务表进行左外连接,取日期表日期字段就可以补齐了。
——如果有其他问题可以留言,望采纳

  • 方案一,mysql8.0可以用with递归出一个完整的日期列表
    with RECURSIVE  cte as
    (select  date'2019-01-01' d
    union all
    select DATE_ADD(d, INTERVAL 1 DAY)
      from cte
     where DATE_ADD(d, INTERVAL 1 DAY) <= date'2019-12-31')
    select d  from cte
    

img

  • 方案二,借用一个带递增列的系统表
    select DATE_ADD(date'2019-01-01', INTERVAL help_topic_id DAY)
    from mysql.help_topic where help_topic_id<=180
    

img