在MySQL中获取两个日期之间的日期?
如何在两个日期中获得日期列表 目前在我的在MySQL中获取两个日期之间的日期?,mysql,Mysql,如何在两个日期中获得日期列表 目前在我的booking表中,我有两个字段,如start\u at和ends\u at 如果我使用这样的查询 2020-06-04 (added dates from 2nd row) 2020-06-05 2020-06-06 2020-06-07 2020-06-08 2020-06-09 2020-08-19 (added dates from 1st row) 2020-08-20 2020-08-21 ......continua
booking
表中,我有两个字段,如start\u at
和ends\u at
如果我使用这样的查询
2020-06-04 (added dates from 2nd row)
2020-06-05
2020-06-06
2020-06-07
2020-06-08
2020-06-09
2020-08-19 (added dates from 1st row)
2020-08-20
2020-08-21
......continuation
2020-09-15
2020-09-16
从预订中选择开始、结束
这将给我所有存在的记录
但我想唯一地列出所有日期记录
假设在记录的第一行2020-08-19
到2020-09-16
这将是输出
2020-08-19
2020-08-20
2020-08-21
......continuation
2020-09-15
2020-09-16
第二排是2020-06-04
至2020-06-09
这将是
2020-06-04
2020-06-05
2020-06-06
2020-06-07
2020-06-08
2020-06-09
正如您所看到的,所有日期之间的间隔都在下拉列表中
最终的输出应该是,收集的日期将根据最近的数据进行安排
2020-06-04 (added dates from 2nd row)
2020-06-05
2020-06-06
2020-06-07
2020-06-08
2020-06-09
2020-08-19 (added dates from 1st row)
2020-08-20
2020-08-21
......continuation
2020-09-15
2020-09-16
为了防止某些日期重复,应将其作为一个日期进行计数/读取。因为所有的日子都安排好了。对于MySQL 8+
WITH RECURSIVE
cte AS ( SELECT starts_at, ends_at, starts_at single_date
FROM booking
UNION ALL
SELECT starts_at, ends_at, single_date + INTERVAL 1 DAY
FROM cte
WHERE single_date < ends_at )
SELECT DISTINCT single_date
FROM cte
ORDER BY 1;
这就是您想要的。我们可以不创建新表,只创建一个查询来完成吗?请指定您的MySQL版本。是否需要MySQL?嗯,可能对所有版本都适用的查询是必须的。顺便说一句,这是我的mysql“mysql版本14.14发行版5.6.37,用于Linux(x86_64),使用EditLine包装器”
,但在我的本地版本中,我使用xampp/PHPMYADMIN,您需要一些方法来生成数字和日期..我认为如果没有类似的东西,您不能..您可以始终创建一个临时表..使用它并在查询后扔掉它!