2011-12-17 3 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 

и я хочу проверить, например, дата в базе данных. , например, я Im давая:

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

это должно возвращать ложь.

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

Это должно быть верно.

как я могу это сделать? какой запрос должен быть для этого в SQL?

+0

Не могли бы вы объяснить, что вы пытаетесь выполнить? Я не понимаю, почему первый пример должен возвращать false, а второй пример возвращает true. Четкое объяснение того, что вы хотите сделать и что вы пробовали, увеличит шансы на полезные ответы! –

+0

Я бы хотел проверить эту дату - это не зарезервировано в базе данных –

+0

Не могли бы вы также объяснить * почему * второй пример должен возвращать true? Я смотрю на ваш стол (который не назван), и я просто не понимаю его. – Aaron

ответ

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

, если у вас есть результат, его ложное, иначе правда.

-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

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

Смежные вопросы