在查询日期时将日期中没有的值补齐

1.先查询出你想要查询的日期范围(示例为15天)

SELECT
			@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
		FROM
			(
				SELECT
					@cdate := DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d'), INTERVAL + 1 DAY)
				FROM
					pay_order
				LIMIT 15
			) t0

如图所示查询到的结果为当前时间前15天的天数

2.查询自己数据库的日期和数据

SELECT sum(TOTAL_AMOUNT) totalMoney,DATE_FORMAT(UPDATE_TIME,'%m-%d-%Y') day
   FROM pay_order 
   WHERE  TRADE_STATE = 2 AND(TO_DAYS(NOW( ) ) - TO_DAYS(UPDATE_TIME) <= 15 )
   GROUP BY DATE_FORMAT(UPDATE_TIME,'%m-%d-%Y')  DESC

 这是查询自己数据库中进15天的记录

3.用左连接将两条数据进行合并

SELECT 
		t1.DAY,
		IFNULL(t2.totalMoney, 0) AS totalMoney
FROM
	(
		SELECT
			@cdate := DATE_ADD(@cdate, INTERVAL - 1 DAY) DAY
		FROM
			(
				SELECT
					@cdate := DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d'), INTERVAL + 1 DAY)
				FROM
					pay_order
			) t0
		LIMIT 15
	) t1
LEFT JOIN (
	SELECT sum(TOTAL_AMOUNT) totalMoney,DATE_FORMAT(UPDATE_TIME,'%Y-%m-%d') time
   FROM pay_order 
   WHERE  TRADE_STATE = 2 AND(TO_DAYS(NOW( ) ) - TO_DAYS(UPDATE_TIME) <= 15 )
   GROUP BY DATE_FORMAT(UPDATE_TIME,'%Y-%m-%d')  DESC
) t2 
ON t1. DAY = t2. time
ORDER BY
	DAY DESC

 这是合并以后的结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值