Mysql查询当天日期近一周的预约时间

近期有个业务,根据当前日期查询近一周预约数量

举例:
张三 开始日期:2024-01-29 结束日期:2024-01-30
李四 开始日期:2024-01-30 结束日期:2024-02-01
王五 开始日期:2024-02-02 结束日期:2024-02-02
在这里插入图片描述
需求:开始日期和结束日期包括当前日期都统计出来

日期数量
2024-01-270
2024-01-280
2024-01-291
2024-01-302
2024-01-311
2024-02-011
2024-02-021

以这种形式展现

WITH RECURSIVE datetime AS (
	SELECT
		DATE_SUB( CURDATE(), INTERVAL n DAY ) AS date 
	FROM
		(
		SELECT
			0 AS n UNION ALL
		SELECT
			1 UNION ALL
		SELECT
			2 UNION ALL
		SELECT
			3 UNION ALL
		SELECT
			4 UNION ALL
		SELECT
			5 UNION ALL
		SELECT
			6 
		) AS days 
	ORDER BY
		n 
	) SELECT
	d.date AS yytime,
	IFNULL( t.num, 0 ) AS num 
FROM
	datetime d
	LEFT JOIN (
	SELECT
		da.date,
		count(*) AS num 
	FROM
		datetime da
		JOIN person per ON da.date BETWEEN per.start_time 
		AND per.end_time 
	GROUP BY
		da.date 
	) t ON d.date = t.date 
ORDER BY
	d.date

下面这段SQL使用的硬编码,伙伴们可根据需要修改

SELECT
			0 AS n UNION ALL
		SELECT
			1 UNION ALL
		SELECT
			2 UNION ALL
		SELECT
			3 UNION ALL
		SELECT
			4 UNION ALL
		SELECT
			5 UNION ALL
		SELECT
			6 

结果:
在这里插入图片描述
还有更好方法的小伙伴们可以在评论区留言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值