WHERE语句查找一个月内的所有记录?

时间:2016-07-12 04:15:13

标签: mysql sql

假设我想查找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的记录,我是逻辑错误吗?

3 个答案:

答案 0 :(得分:4)

您似乎想要选择6月份正在进行的所有案例。如果是这样,那么这些是可能的4种情况:

enter image description here

或者,换句话说,案件必须兼顾

  • 在七月之前开始;和
  • 五月后结束

因此,查询基本上如下所示:

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)

注意:这只是在不考虑效果的情况下比较部分的选项。