MySQL时间重叠

时间:2011-09-28 10:33:38

标签: php mysql sql database

我有一个数据库来管理我的日程安排 数据库看起来像:

CREATE TABLE activities(
name VARCHAR(255),
startTime INT(11),
endTime INT(11)
);

现在我想检测活动中的重叠。 所以我想说我有以下变量:

$start=time();
$end=time()+3600;

现在我想查询数据库以获取与这些时间重叠的所有活动。 任何人都知道如何做到这一点?

谢谢!

P.S。我意识到已经问过类似的问题,但我找不到MySQL的答案,其表格与此类似。

3 个答案:

答案 0 :(得分:1)

使用类似

的内容
SELECT * FROM activities WHERE
(.$start. BETWEEN startTime AND endTime) OR
(.$end. BETWEEN startTime AND endTime) OR
(startTime < .$start. AND endTime > .$end.);

答案 1 :(得分:0)

我猜你想要的东西是:

mysql_query( "SELECT * FROM `activities` WHERE `startTime`<".$start." AND `endTime`>".$end);

要小心正确地索引你的表格,否则这将是一个缓慢的查询。

答案 2 :(得分:0)

使用以下查询。

"SELECT * 
FROM `activities` 
WHERE `endTime`>".$start." AND `startTime`<".$end

当您解决问题时,解决方案变得非常明显。