sql查询日期范围,没有自动补0

1、问题在线

为了实现echarts按天统计每天的总数,但是有几天没有数据,sql中并不显示
该怎么实现?

2、实现思路

先查出你想统计近几天天数的日期,然后关联数据表的日期,并用ifnull函数,没有数据自动补0;

3、 统计你想查询的连续天数

SELECT
			@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
		FROM
			(
				SELECT
					@cdate := DATE_ADD('2020-3-25', INTERVAL + 1 DAY)
				FROM
					表名
			) t0
		LIMIT 14

执行结果
在这里插入图片描述

4、关联表

SELECT
	t1. DAY,
	IFNULL(t2.id, 0) AS id
FROM
	(
		SELECT
			@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
		FROM
			(
				SELECT
					@cdate := DATE_ADD('2020-3-25', INTERVAL + 1 DAY)
				FROM
					u_record 
			) t0
		LIMIT 14
	) t1
LEFT JOIN (
	SELECT
		DATE(u.open_time) DAY,
		COUNT(1) AS id
	FROM
		u_record u
	WHERE
		u.open_time <= '2020-3-25'
	AND DATE(u.open_time) > DATE_SUB('2020-3-25', INTERVAL '14' DAY)
	AND unusuall_type ='0'
	GROUP BY
		DAY
) t2 ON t1. DAY = t2. DAY
ORDER BY
	DAY ASC

执行结果
在这里插入图片描述
5、sql分析
1.@cdate := 是定义名为cdate的变量并赋值(select 后面必须用:=)

2.@cdate := DATE_ADD(‘20171219’, INTERVAL + 1 DAY) 按照传入的日期’20171219’,加一天

3.SELECT @cdate := DATE_ADD(‘20171219’, INTERVAL + 1 DAY) FROM order

发布了2 篇原创文章 · 获赞 0 · 访问量 17
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览