MySQL时间重叠


MySQL time overlapping

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

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

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

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

现在我想查询数据库,以获得与这些时间重叠的所有活动。有人知道怎么做吗?

谢谢!

注。我意识到类似的问题已经问过了,但我找不到MySQL的答案与表类似,

使用

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

我想你会想要这样的:

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

只是要注意正确索引你的表,否则这将是一个非常慢的查询。

使用下面的查询

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

当你把问题画下来时,解决办法就很明显了。