MySQL之统计查询,按月查询每天数据,无数据自动填充0

先上代码,着急的同学直接复制就能用

之前写过一个按年查询每月数据,无数据自动填充0,需要的话点击这里

查询语句

SELECT
	DATE_FORMAT(lefttable.date, '%Y-%m') AS yearMonth,
	lefttable.date
FROM
	(
		SELECT
			ADDDATE(y. FIRST, x.d - 1) AS date
		FROM
			(
				SELECT 01 AS d UNION ALL SELECT 02 UNION ALL SELECT 03 UNION ALL
				SELECT 04 UNION ALL SELECT 05 UNION ALL SELECT 06 UNION ALL
				SELECT 07 UNION ALL SELECT 08 UNION ALL SELECT 09 UNION ALL
				SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL
				SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL
				SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL
				SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL
				SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL
				SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL 
				SELECT 28 UNION ALL
				SELECT 29 UNION ALL
				SELECT 30 UNION ALL
				SELECT 31 
			) x,
			(
				SELECT
					CONCAT('2020-5', '-01') AS FIRST,
					DAY (
						LAST_DAY(
							str_to_date('2020-5-2', '%Y-%m')
						)
					) AS last
			) y
		WHERE
			x.d <= y.last
	) AS lefttable

结果

2020-05-01
2020-05-02
2020-05-03
2020-05-04
2020-05-05
2020-05-06
2020-05-07
2020-05-08
2020-05-09
2020-05-10
2020-05-11
2020-05-12
2020-05-13
2020-05-14
2020-05-15
2020-05-16
2020-05-17
2020-05-18
2020-05-19
2020-05-20
2020-05-21
2020-05-22
2020-05-23
2020-05-24
2020-05-25
2020-05-26
2020-05-27
2020-05-28
2020-05-29
2020-05-30
2020-05-31

关键字

DATE_FORMAT(date,format)

DATE_FORMAT(date,format)

这个不用多说吧,都知道,日期格式化嘛
参数:
	date: 日期
	format: 格式('%Y-%m-%d')

DATE_ADD(date,INTERVAL expr unit)

定义:函数向日期添加指定的时间间隔。
参数:
	date: 参数是合法的日期表达式
	expr: 参数是您希望添加的时间间隔。
	type 参数可以是下列值:
		MICROSECOND
		SECOND
		MINUTE
		HOUR
		DAY
		WEEK
		MONTH
		QUARTER
		YEAR
		SECOND_MICROSECOND
		MINUTE_MICROSECOND
		MINUTE_SECOND
		HOUR_MICROSECOND
		HOUR_SECOND
		HOUR_MINUTE
		DAY_MICROSECOND
		DAY_SECOND
		DAY_MINUTE
		DAY_HOUR
		YEAR_MONTH

示例

假设我们有如下的表:

OrderIdProductNameOrderDate
1Computer2008-12-29

现在,我们希望向 “OrderDate” 添加 2 天,这样就可以找到付款日期。我们使用下面的 SELECT 语句:

SELECT 
	OrderId,
	DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
FROM 
	Orders

结果:

OrderIdOrderPayDate
12008-12-31
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星期三

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

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

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

打赏作者

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

抵扣说明:

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

余额充值