2016-03-30 190 views
-1

我有一个带有ID,两个日期时间和一个布尔列的MySQL数据表。MySql查询两个日期之间的任何日期是在两个日期之间

是这样的:

CREATE TABLE `Example` (
`ID` int(11) NOT NULL AUTO_INCREMENT, 
`Date1` date NOT NULL, 
`Date2` date NOT NULL, 
`Answered` tinyint(1) DEFAULT NULL, 
PRIMARY KEY (`ID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

现在我有一个开始日期和结束日期,我需要一个SQL查询这给我说行,其中任何一天之间STARTDATE并且结束日期之间日期1日期2

什么工作原理是,查询,至极给我的那些行,其中日期1是STARTDATE和结束日期之间Aswered= 1

$proof = "select * from Example where Date1 
    between '$startdate' and '$enddate' and Answered = 1"; 

但我不知道如何做到这一点与两个日期之间的所有日期

感谢您的帮助!

+0

的可能的复制[确定是否两个日期范围重叠(http://stackoverflow.com/问题/ 325933 /确定是否两个日期范围重叠) –

+0

您应该包括样本数据和期望输出。 \t请阅读[**如何提问**](http://stackoverflow.com/help/how-to-ask) \t \t这里是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)了解如何提高您的问题质量并获得更好的答案。 –

+0

不,那不是我正在寻找的 – DST

回答

0

如果我理解正确的,你会想:

SELECT * FROM Example 
WHERE (Date1 BETWEEN '$startdate' AND '$enddate') 
    AND (Date2 BETWEEN '$startdate' AND '$enddate') 
    AND Answered = 1 
+0

我想知道如果从startdate和enddate之间的时间范围内的任何日期在Date1和Date2 – DST

+0

之间的时间范围内,即SQL语句应该这样做 –

0

如果你想包括起点和终点,何谈:

SELECT * 
FROM `Example` 
WHERE `Answered` = 1 
AND `Date1` >= '$startdate' 
AND `Date2` <= '$enddate' 

如果您不希望包括他们的结果:

SELECT * 
FROM `Example` 
WHERE `Answered` = 1 
AND `Date1` > '$startdate' 
AND `Date2` < '$enddate' 

你或许应该在这里太阅读:PHP: Prepared Statements - Manual

+0

那不是我正在搜索的内容,我想知道是否有任何来自startdate和enddate之间的时间间隔在Date1和Date2之间的时间范围内 – DST

0

好的基础上,2个回答上面我解决我的问题, 这是我所需要的查询:

SELECT * FROM `Example` 
WHERE ('$startdate' BETWEEN Date1 AND Date2) 
    OR ('$enddate' BETWEEN Date1 AND Date2) 
    OR (Date1 BETWEEN '$startdate' AND '$enddate') 
    OR (Date2 BETWEEN '$startdate' AND '$enddate') 
    AND Answered = 1 
相关问题