我有一个表,其中包含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
最佳答案
此处的一个选项是创建一个日历表,其中包含 2018 年(也可能还有其他年份)的所有日期(包括在内)。然后,只需将此日历表内部联接到给定人员的记录即可。
SELECT c.date
FROM calendar c
INNER JOIN yourTable t
ON c.date BETWEEN t.startDate AND t.endDate;
See here有关在 MySQL 中创建日历表的一些不错的选择。
关于mysql - 为范围内的每个日期选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50316816/