php - MySQL 重叠日期,无冲突

标签 php mysql date range overlapping

我已经看到很多关于 MySQL 中日期范围的线程,但我似乎仍然无法找到我正在寻找的答案,因此任何帮助都将受到极大的欢迎。

我有一个包含 3 列的 MySQL 表,日期 - 开始时间 - 结束时间。日期是MySQL“日期”类型字段,开始和结束时间都是“时间”类型字段。

例如,我在数据库中有一个条目,如下所示,我们将此 session 称为 1;

date = 2011-06-30, startTime = 09:00:00, finishTime = 11:00:00

如果我要添加另一个 session ,我需要确保它不会与现有 session 冲突。因此以下操作将会失败,因为它位于 session 1 的开始时间和结束时间之间。

date = 2011-06-30, startTime = 10:00:00, finishTime = 12:00:00

因此记录只能在现有 session “之后”或“之前”插入。

我正在使用 PHP/MySQL,并且基于可以运行查询的基础上,如果有“有”匹配结果,则失败,如果有“没有”匹配结果,则插入。

提前致谢。

最佳答案

我正在使用 PHP/MySQL,并且基于可以运行查询的基础上,如果有“有”匹配结果,则失败,如果有“没有”匹配结果,则插入。

好吧,试试这个。这里 :date: 是您要添加的条目的日期,:start-time::finish-time: 是分别是开始和结束时间。

SELECT EXISTS (
    SELECT
        1
    FROM
        TableName
    WHERE
        `date` = :date: AND
        ( :start-time: BETWEEN startTime AND finishTime OR
          :finish-time: BETWEEN startTime AND finishTime OR
          startTime BETWEEN :start-time: AND :finish-time:
          )
) AS `Clash`

关于php - MySQL 重叠日期,无冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6519424/

相关文章:

php - PHP 中的 MySQL 更新查询并返回多个 id

php - 在 Woocommerce 中复制 Hook 函数时避免错误 500

mysql - 在 MySQL Group 函数中排序

mysql - 使用 MySQL 按浏览量排名

php - 用于修复损坏的序列化 PHP 数据的正则表达式/代码。

php - 寻找 PHP 解析错误

php - 将图像存储在mysql数据库中

python - 无法使用钟摆来解析系列中的日期,但可以一一解析

mysql - mysql根据周+dayofweek查找日期

python - 使用 python 生成重复日期?