我有一个数据库来管理我的日程数据库看起来像:
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
当你把问题画下来时,解决办法就很明显了。