假设我想查找6月份涉及的所有记录!
-----------------------------------------------------------
CaseID StartDate EndDate
1 2016-05-31 2016-06-01
2 2016-02-29 2016-06-20
3 2016-03-21 2016-06-01
4 2016-05-05 2016-06-01
5 2016-05-20 2016-07-01
6 2016-05-12 2016-12-31
SELECT CaseID, StartDate, EndDate
FROM ServiceCase
WHERE((StartDate > '2016-05-31' and StartDate < '2016-07-01') or (EndDate >
'2016-05-31' and EndDate < '2016-07-01'))
但我无法搜索CaseID 6的记录,我是逻辑错误吗?
答案 0 :(得分:4)
您似乎想要选择6月份正在进行的所有案例。如果是这样,那么这些是可能的4种情况:
或者,换句话说,案件必须兼顾
因此,查询基本上如下所示:
SELECT CaseID, StartDate, EndDate
FROM ServiceCase
WHERE
StartDate < '2016-07-01' AND EndDate > '2016-05-31'
输出:SQL fiddle
答案 1 :(得分:0)
尝试如下所述:
SELECT CaseID, StartDate, EndDate
FROM ServiceCase
WHERE(StartDate < '2016-07-01' and EndDate > '2016-05-31')
答案 2 :(得分:0)
您可以尝试MySQL MONTH()功能; 6月份的示例代码如下:
SELECT CaseID, StartDate, EndDate
FROM ServiceCase
WHERE MONTH(StartDate) = 6
OR MONTH(EndDate) = 6
OR (MONTH(StartDate) < 6 AND MONTH(EndDate) > 6)
注意:这只是在不考虑效果的情况下比较月部分的选项。