【发布时间】:2020-10-28 22:19:13
【问题描述】:
我需要检查两个日期是否与我数据库中的另外两个日期重叠。
我的数据库是这样的
+----+--------------+------------+------------+
| 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 |
+----+--------------+------------+------------+
在我的查询中,我指定了范围:开始日期和结束日期 让我们按如下方式分配它们:
ScopeStartDate = "2013-10-1"
ScopeEndDate = "2013-11-26"
上面应该返回我所有的记录,因为所有的记录都超过了时间跨度。
但是我无法让查询正常工作:/
我尝试了以下查询,但没有成功:
WHERE
(
(StartDate < ScopeStartDate AND StartDate > ScopeStartDate)
OR
(StartDate > ScopeStartDate AND EndDate < ScopeEndDate )
)
这会返回两个结果: 1 和 3
我做错了什么?
【问题讨论】:
-
如果我明白你想要什么,这应该是“OR”的“AND”
-
(StartDate < ScopeStartDate AND StartDate > ScopeStartDate)怎么可能是真的?它不能更大也不能更小。 -
正确,比较器也是错误的。