好的...所以我有一个日历,在使用 CodeIgniter 构建的自定义 PHP 应用程序中,它从 MySQL 数据库中提取其条目。在包含条目数据的表中,有 3 个字段控制条目的日期 ( start_date )、时间 ( start_time ) 和持续时间 ( duration )。现在,随着最终用户将条目移动到新的日期和/或时间,系统需要检查这 3 个字段是否存在任何计划冲突。
以下是查询中使用的一些变量:
$request_entry_id // the id of the entry being moved
$request_start_date // the requested new date
$request_start_time // the requested new time
$request_duration // the duration of the entry being moved (will remain the same)
$end_time = ($request_start_time + $request_duration); // the new end time of the entry being moved
我用于检查日程冲突的查询是:
SELECT t.id
FROM TABLE t
WHERE t.start_date = '$request_start_date'
AND (j.start_time BETWEEN '$request_start_time' AND '$end_time'))
AND t.id <> $request_entry_id
上面的查询将检查与请求在同一日期和时间开始的任何条目。但是,我还想以最有效的方式检查以确保新请求不属于现有条目的持续时间(这是诀窍)。有什么建议么?提前致谢!