首页 > 解决方案 > 为范围内的每个日期选择行

问题描述

我有一个,它有personIds一个开始日期和一个结束日期

我需要选择每一personId-date对,但日期在两指定的范围内。

例如:

personId | startDate | endDate
1 | 2018-05-10 | 2018-05-13

会回来

personId | date
1 | 2018-05-10
1 | 2018-05-11
1 | 2018-05-12
1 | 2018-05-13

标签: mysql

解决方案


这里的一种选择是创建一个日历表,其中包含 2018 年(可能还有其他年份)的所有日期(包括在内)。然后,只需将此日历表内部连接到给定人员的记录。

SELECT c.date
FROM calendar c
INNER JOIN yourTable t
    ON c.date BETWEEN t.startDate AND t.endDate;

有关在 MySQL 中创建日历表的一些不错的选项,请参见此处。


推荐阅读