检查MySQL中的范围日期

时间:2011-12-17 16:23:42

标签: php mysql sql

我的数据库中有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中哪个查询应该是这个?

3 个答案:

答案 0 :(得分:3)

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

如果你有结果,那就是假,否则为真。

答案 1 :(得分: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应该在给定日期之间。

答案 2 :(得分:-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;
}