MySQL 查找 2 个输入日期在 start_date 和 end_date 之间相交的交集

MySQL Finding intersection where 2 entered dates intersect between a start_date and end_date

我正在尝试查找 2 个输入的日期是否在开始 date/time 和结束 date/time 之间有交集。

我的数据库中的示例table“预订”我们有一行包含以下内容

start_date = 2022-02-28 09:00:00 end_date = 2022-02-28 11:00:00

我想构建一个查询,当我传入以下输入时我可以select这一行

开始日期 = 2022-02-28 08:30:00 结束日期 = 2022-02-28 12:30:00

现在,此过滤器应该 select 与 date/time 相交的任何行。我构建了以下查询,但是,这不是 select 我想要的交集。我可以做些什么来调整以下查询吗?此查询在大多数情况下有效(当日期确实在 start/end 日期内时)但不会像这样进行任何交集。此查询在大多数情况下都有效,但不适用于这种情况。

SELECT
    rp.product_id
FROM
    reservation r
    INNER JOIN reservation_product AS rp ON r.reservation_id = rp.reservation_id
WHERE
    (
        '2022-02-28 08:30:00' BETWEEN r.start_date
        AND r.end_date
    )
    OR (
        '2022-02-28 12:30:00' BETWEEN r.start_date
        AND r.end_date
    )

示例数据 - 下面的输入应该 select 正方形中的那一行。

开始日期 = 2022-02-28 08:30:00 结束日期 = 2022-02-28 12:30:00

如果 start_date 小于两个日期中的最大值且 end_date 大于两个日期中的最小值,则可以找到交集:

WHERE r.end_date >= '2022-02-28 08:30:00'
  AND r.start_date <= '2022-02-28 12:30:00'

区间A、B相交条件为A.start<=B.End AND B.start <= A.End

.. 
WHERE
    (
        '2022-02-28 08:30:00' < r.end_date
    )
    AND (
        '2022-02-28 12:30:00' > r.start_date
    )