【发布时间】:2017-09-25 10:36:11
【问题描述】:
我在 mysql 中有一个时间分配表。在我将新记录推送到其中之前,我需要检查它是否与现有日期和时间段重叠。
db 中的示例数据如下
Start Date End Date | Start Time | End Time
2017-01-01 | 2017-01-01 | 10:00 | 11:00
2017-01-01 | 2017-01-01 | 08:00 | 09:00
2017-01-01 | 2017-01-02 | 01:00 | 02:00
最后一条记录表示 2017-01-01 和 2017-01-02,这两天都分配了 01:00 到 02:00 的时间。
以下是我将尝试推送的一些示例记录。预期结果显示为最后一列。 我需要运行查询并确保这些记录不会在 db 中重叠。
Start Date End Date | Start Time End Time
2017-01-01 | 2017-01-01 | 01:30 | 01:31 | OVERLAP
2017-01-02 | 2017-01-02 | 01:30 | 01:31 | OVERLAP
2017-01-01 | 2017-01-02 | 01:30 | 01:31 | OVERLAP
2017-01-01 | 2017-01-02 | 00:30 | 00:31 | PASS
2017-01-03 | 2017-01-03 | 00:30 | 00:31 | PASS
2016-12-30 | 2017-01-04 | 01:30 | 01:31 | OVERLAP
2016-12-30 | 2016-12-30 | 00:30 | 00:31 | PASS
我无法编写满足所有条件的查询。 请帮助我查询以检查数据库中的重叠记录,我的输入是 $start_date、$end_date、$start_time 和 $end_time。
【问题讨论】:
-
听起来您确实有一个满足大多数或至少某些条件的查询。你不妨分享一下。