我已经看到很多关于 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/