找出mysql中两个日期范围之间重叠的天数

找出mysql中两个日期范围之间重叠的天数,mysql,date,Mysql,Date,我有一张有日期范围的桌子。我想知道它是否与另一个范围重叠,并计算重叠的天数 尝试只在mysql中实现,而不需要通过前端语言PHP中的循环 id | start_date | end_date 1 | 2019-01-02 | 2019-01-07 2 | 2019-01-03 | 2019-01-03 3 | 2019-01-06 | 2019-01-09 日期范围start=2019-01-04,日期范围end=2019-01-07 日期格式为YYYY-MM-DD 希望最终结果是: i

我有一张有日期范围的桌子。我想知道它是否与另一个范围重叠,并计算重叠的天数

尝试只在mysql中实现,而不需要通过前端语言PHP中的循环

id | start_date | end_date
1  | 2019-01-02 | 2019-01-07
2  | 2019-01-03 | 2019-01-03
3  | 2019-01-06 | 2019-01-09
日期范围
start=2019-01-04
,日期范围
end=2019-01-07

日期格式为YYYY-MM-DD

希望最终结果是:

id | start_date | end_date    | total_days
1  | 2019-01-02 | 2019-01-07  | 4
2  | 2019-01-03 | 2019-01-03  | 0
3  | 2019-01-05 | 2019-01-09  | 3
尝试使用MySQL DATEDIFF()函数:

MySQL DATEDIFF()返回两个日期之间的天数或 日期时间。此函数仅计算每个日期的日期部分 表情


为什么结果中第三行的开始日期应该是
2019-01-05
而不是
2019-01-06
?试试
最大(开始日期,开始范围)
最小(结束日期,结束范围)
DATEDIFF
你读过这个问题吗?
DATEDIFF(expr1,expr2);