Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检索MySQL中特定日期范围内发生的所有记录_Mysql - Fatal编程技术网

检索MySQL中特定日期范围内发生的所有记录

检索MySQL中特定日期范围内发生的所有记录,mysql,Mysql,我有一个包含多个合同的表,每个合同都有一个开始日期和一个结束日期,如下所示: | ID | Contract Name | Start Date | End Date | |-------|-------------------|--------------|------------| | 1 | Joe Bloggs | 2012-01-01 | 2012-02-05 | | 2 | John Smiths | 2012-0

我有一个包含多个合同的表,每个合同都有一个开始日期和一个结束日期,如下所示:

|  ID   |   Contract Name   |  Start Date  |  End Date  |
|-------|-------------------|--------------|------------|
|   1   |  Joe Bloggs       |  2012-01-01  | 2012-02-05 |
|   2   |  John Smiths      |  2012-02-01  | 2012-02-20 |
|   3   |  Johnny Briggs    |  2012-03-01  | 2012-03-20 |
我试图做的是构建一个查询,该查询将检索在特定时间段之间处于活动状态的合同。因此,如果我的开始日期为
2012-02-10
,结束日期为
2012-03-21
,我应该显示以下合同:

|  ID   |   Contract Name   |  Start Date  |  End Date  |
|-------|-------------------|--------------|------------|
|   2   |  John Smiths      |  2012-02-01  | 2012-02-20 |
|   3   |  Johnny Briggs    |  2012-03-01  | 2012-03-20 |
但我的问题是,我不知道如何构建查询来实现这一点。到目前为止,我得到的是:

SELECT *
FROM contracts c
WHERE c.startdate BETWEEN '2012-02-10'
    AND '2012-03-21'
    AND c.enddate BETWEEN '2012-02-10'
    AND '2012-03-21'

但这不起作用,无法检索任何记录。我做错了什么?

对我来说,一个好的请求是

SELECT * FROM contracts c WHERE c.startdate >'2012-02-10' AND c.enddate < '2012-03-21'
从合同c中选择*,其中c.startdate>'2012-02-10'和c.enddate<'2012-03-21'

应该是这样的

SELECT *
FROM contracts c
WHERE c.startdate >= '2012-02-10'
    AND c.enddate <= '2012-03-21'
选择*
来自合同c
其中c.startdate>='2012-02-10'

而c.enddateEr,时间是线性的,对吗

SELECT * 
FROM contracts 
WHERE end_date >= '2012-02-10' 
AND start_date <= '2012-03-21';
选择*
从合同中
其中结束日期>='2012-02-10'
并从合同中选择*开始日期

其中(起始日期介于“2012-03-01”和“2013-03-21”之间)
或(截止日期介于“2012-03-01”和“2013-03-21”之间)
或(开始日期为2013年3月21日);

:输入日期之间开始的间隔记录。间隔的第一部分或全部可能包括在内

(END_DATE between '2012-03-01' AND '2013-03-21') 
(START_DATE<= '2012-03-01' AND END_DATE >='2013-03-21') 
:输入日期之间结束的间隔。间隔的最后一部分或全部可能包括在内

(END_DATE between '2012-03-01' AND '2013-03-21') 
(START_DATE<= '2012-03-01' AND END_DATE >='2013-03-21') 
(开始日期为2013-03-21')

:输入日期仅包含在一个间隔内

ID=2开始日期早于您正在搜索的开始日期。
(END_DATE between '2012-03-01' AND '2013-03-21') 
(START_DATE<= '2012-03-01' AND END_DATE >='2013-03-21')