mysql - 为范围内的每个日期选择行

标签 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;

See here有关在 MySQL 中创建日历表的一些不错的选择。

关于mysql - 为范围内的每个日期选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50316816/

相关文章:

php - 如何使用php显示mysql数据库中的图像

mysql - 使用 Node.js 和 Handlebars 插入 MySQL 记录时出现问题

mysql - 如果不满足查询中的条件,mysql 是否会移动到下一行?

PHP - 文件未发送到数据库错误

mysql 查询不包含分层表的地方

mysql - .mysql_history 没有被自动保存

mysql - 当日期采用 mmm-dd-yyyy 格式时,如何选择大于日期

java - 如何将React端口更改为API端口?

mysql - 从 2 LEFT JOIN mysql 查询获取串联结果

php - 查询以显示基于月份和年份的信息