MySQL检查两个日期范围是否与输入重叠

Jaz*_*rix 4 mysql sql datetime

我需要检查我的数据库中是否有两个日期和另外两个日期.

我的数据库看起来像这样

+----+--------------+------------+------------+
| id | code         | StartDate  | EndDate    |
+----+--------------+------------+------------+
|  1 | KUVX-21-40   | 2013-10-23 | 2013-11-22 |
|  2 | UEXA286-1273 | 2013-10-30 | 2013-11-29 |
|  3 | UAJFAU-2817  | 2013-10-21 | 2013-11-20 |
|  4 | KUVX-21-40   | 2013-10-30 | 2013-11-29 |
+----+--------------+------------+------------+
Run Code Online (Sandbox Code Playgroud)

在我的查询中,我指定范围:开始日期和结束日期让它们如下所示:

ScopeStartDate = "2013-10-1"
ScopeEndDate = "2013-11-26"
Run Code Online (Sandbox Code Playgroud)

上面应该返回所有记录,因为所有记录都与时间跨度重叠.

但是我无法查询工作:/

我试过以下查询没有运气:

WHERE
(
    (StartDate < ScopeStartDate AND StartDate > ScopeStartDate)
    OR
    (StartDate > ScopeStartDate  AND EndDate < ScopeEndDate )
)
Run Code Online (Sandbox Code Playgroud)

这给我两个结果: 1和3

我究竟做错了什么?

ame*_*iel 30

我相信以下条件匹配每个可能的重叠情况.

WHERE
(
    (ScopeStartDate <= EndDate AND ScopeEndDate >= StartDate)

)
Run Code Online (Sandbox Code Playgroud)

除非您声明了不合逻辑的时间跨度(例如,那些在开始之前结束的时间)