我有一个数据库来管理我的日程安排 数据库看起来像:
CREATE TABLE activities(
name VARCHAR(255),
startTime INT(11),
endTime INT(11)
);
现在我想检测活动中的重叠。 所以我想说我有以下变量:
$start=time();
$end=time()+3600;
现在我想查询数据库以获取与这些时间重叠的所有活动。 任何人都知道如何做到这一点?
谢谢!
P.S。我意识到已经问过类似的问题,但我找不到MySQL的答案,其表格与此类似。
答案 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
当您解决问题时,解决方案变得非常明显。