mysql - 为范围内的每个日期选择行
问题描述
我有一个表,它有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;
有关在 MySQL 中创建日历表的一些不错的选项,请参见此处。
推荐阅读
- discord - 如何正确上传过长的消息作为文件?
- python - pandas - 按列分组并获取另一个带空值的字符串列的最大长度
- xunit - xunit忽略测试但可以强制运行
- javascript - D3js,动态改变X轴的域
- javascript - 使用 https.get 获取 URL 响应代码并将其存储在变量中
- tailwind-css - 在像素顺风中设置最小高度
- python - Pandas - 删除重复的列名,但将其唯一的行值附加到现有列
- javascript - 引导模式加载具有特定元素的远程内容
- spring-boot - Spring Boot 导出 Excel XSSFSheet 添加标题不起作用
- android - 蚂蚁媒体景观和自适应比特率