2016-03-30 295 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 
相關問題