繁体   English   中英

在哪里找到一个月内所有记录的声明?

[英]WHERE Statement to find all records in a month?

假设我要查找六月中涉及的所有记录!

-----------------------------------------------------------
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的记录,逻辑是否错误?

您似乎想选择6月份正在处理的所有案件。 如果是这样,那么以下是四种可能的情况:

在此处输入图片说明

或者换句话说,情况必须

  • 7月之前开始;
  • 五月后结束

因此,查询基本上看起来像这样:

SELECT CaseID, StartDate, EndDate
FROM ServiceCase
WHERE
    StartDate < '2016-07-01' AND EndDate > '2016-05-31'

输出: SQL提琴

尝试如下所述:

SELECT CaseID, StartDate, EndDate
FROM ServiceCase
WHERE(StartDate < '2016-07-01' and EndDate > '2016-05-31')

您可以尝试使用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)

注意:这只是比较月份部分而不考虑性能的一种选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM