好了,所以我想选择DB行,看是否有在日历中的任何冲突,我所遇到的另一个问题SQL语句选择行
这里是我的代码
$query3 = $dbh->prepare("SELECT * FROM calendar_" . $companyID . " WHERE (calTime+duration) > :calstart AND (calTime+duration) <= (:calend + (duration-(:calend-calTime))) AND agentID = :agentID ORDER BY calTime ASC");
$query3->bindParam(':calstart', $time);
$calend = $time + $duration;
$query3->bindParam(':calend', $calend);
这看起来是一个像这样更具可读性SQL
SELECT * FROM calendar_01 WHERE (calTime + duration) > 1331386200
AND (calTime + duration) <= (1331388000 + (duration - (1331388000 - calTime)))
AND agentID =1
ORDER BY calTime ASC
LIMIT 0 , 30
下边界明显工作正常但与上边界我有问题,即如果一个事件的持续时间是7200 2小时,有人试图进入一个新的事件,即只有1800的长度,并在第一个事件发生后1800开始允许它,即使已经输入的事件长度为7200并且事实上会超出新事件。因此,我需要上边界是动态的,因为如果:calend <(calTime + duration)然后选择行,否则使用:calend作为上边界。
我,虽然我几乎是正确的什么我却在尝试此部分
(1331388000 + (duration - (1331388000 - calTime)))
结束了在某些情况下减减,因此上界是非常大的,包括对行的时候,他们不应该
对不起,但你的问题是什么? – Ben 2012-03-11 00:15:08