gpt4 book ai didi

mysql - 检查日期/时间冲突 MySQL

转载 作者:行者123 更新时间:2023-11-29 00:32:57 25 4
gpt4 key购买 nike

好的...所以我有一个日历,在使用 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

上述查询将检查与请求在同一日期和时间开始的任何条目。但是,我还想以最有效的方式检查以确保新请求不在现有条目的持续时间内(这就是窍门)。有什么建议么?提前致谢!

最佳答案

先想一下不冲突的条件比较容易理解逻辑:

The new event ends before the existing one starts, or starts after the existing event ends.

如果存在冲突,我们取上面的否定:

The new event ends after the existing one starts, and starts before the existing event ends.

在 SQL 中:

SELECT t.id
FROM TABLE t
WHERE t.start_date = '$request_start_date'
AND ('$end_time' > t.start_time AND '$request_start_time' < addtime(t.start_time, t.duration))
AND t.id <> $request_entry_id

关于mysql - 检查日期/时间冲突 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com