2011-12-17 92 views
0

我有我的mysql數據庫:檢查範圍的日期在MySQL

id | text | date_start   | date_stop 
1 | aa | 2011-12-17 10:45:00 | 2011-12-18 15:33:00 
2 | aa | 2011-12-18 19:11:44 | 2011-12-20 10:10:19 
3 | aa | 2011-12-21 15:14:00 | 2011-12-23 11:21:00 

,我想檢查是否例如日期是在數據庫中。 例如我即時給予:

date_start: 2011-12-17 11:11:11 and date_stop 2011-12-18 16:11:11 

這應該返回false。

date_start: 2011-12-20 11:11:11 and date_stop 2011-12-21 11:11:11 

這應該返回true。

我該怎麼做?哪些查詢應該用於SQL?

+0

你能解釋一下你試圖完成什麼嗎?我不明白爲什麼第一個例子應該返回false,第二個例子返回true。清楚地解釋你想要做什麼和你嘗試過什麼會增加有用答案的機會! – 2011-12-17 16:28:01

+0

我想檢查這個日期 - 這是不是保留在數據庫中 – 2011-12-17 16:31:18

+0

你能否解釋*爲什麼*第二個例子應該返回true?我正在看你的桌子(沒有命名),我只是沒有得到它。 – Aaron 2011-12-17 16:34:52

回答

3
WHERE start_date BETWEEN $start AND $end 
OR end_date BETWEEN $start AND $end 
OR ($start < start_date AND $end > end_date) 

,如果你有一個結果,它的虛假,否則返回true。

-1

不知道這是你的意思,但是:

$link = mysql_connect("localhost", "mysql_user", "mysql_password"); 
mysql_select_db("database", $link); 

$result = mysql_query("SELECT * FROM table WHERE date_start = '2011-12-17 11:11:11' AND date_stop = '2011-12-18 16:11:11'", $link); 
$amount = mysql_num_rows($result); 

if($amount > 0) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 
+0

他想知道範圍是否與數據庫中的任何範圍重疊。 – dqhendricks 2011-12-17 16:35:41

1

試試這個:

SELECT COUNT(*)>0 FROM tbl WHERE date_start BETWEEN '2011-12-20 11:11:11' AND '2011-12-21 11:11:11' 

我想這date_start應給予日期之間。

+0

日期開始可能不在任何範圍之間,而範圍仍然重疊。將不得不檢查開始日期和結束日期 – dqhendricks 2011-12-18 01:39:21