Mysql查询最近30天数据 - 自动补全日期

mysql中统计数据,按照日期汇总,如果某一天没有数据,会没有对应的时间,可以使用一下方法解决

-- 查询时间,并统计数据
select all_day,count(td.id) from 
(
	-- 生成日期 
	SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL day_p DAY), '%Y-%m-%d') as all_day FROM ( 
	  -- 生成一个序号 
		SELECT @day_p:=@day_p+1 as day_p from 
		-- 数字 5 * 6 = 30 改成自己需要的天数即可 【此处为连接查询 没有链接条件,结果为表1行数 * 表2行数】
		(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 ) ac1, 
		(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) ac2,
		-- 声明从0开始
		(SELECT @day_p:=1) a
	) ad 
) months LEFT JOIN 表名  td 
-- 连接上要查询的表,链接条件为生成的日期 等于 表中的日期 
on months.all_day =  DATE_FORMAT( td.create_time ,'%Y-%m-%d' ) GROUP BY all_day

统计今年开始的小时。到现在

SELECT DATE_FORMAT( 
		DATE_SUB( 
			DATE_SUB( "2021-01-01 00:00:00", INTERVAL -date_day day  ),  
			INTERVAL -date_hour HOUR
		), 
		'%Y-%m-%d %H') as all_day 
FROM 
(
	SELECT 
		IF(@date_h>=23,@date_d:=@date_d+1, @date_d:=@date_d) as date_day,
		IF( @date_h<23,@date_h:=@date_h+1 ,@date_h:=0 ) as date_hour 
	from (
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a1,
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a2,
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a3,
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a4,
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a5,
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a6,
			(SELECT 1 union SELECT 2 UNION SELECT 3 UNION SELECT 4 ) as a7,
			(SELECT @date_d:=0) as a,
			(SELECT @date_h:=0) as b
		) 
) as aaaa HAVING all_day < NOW()  ORDER BY all_day desc 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇葩也是花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值