【发布时间】:2019-09-16 08:26:34
【问题描述】:
我有以下 SQL 表列:
reservationId - int
startDateTime - datetime
endDateTime - datetime
我的问题是这样的:
我想看看一天中是否有 [time] 段可以满足 [time] 预订。
例如,我正在寻找 6 月 1 日上午 9 点到晚上 9 点的 2 小时预订。
6 月 1 日目前有两个预订:
10am - 2pm
4pm - 6pm
我希望我的查询返回可用于预订的时间。即:
2pm - 4pm
6pm - 8pm
7pm - 9pm
关于如何进行此操作的任何想法?
【问题讨论】:
-
您是否有可以预订的窗口?请注意,如果您有一个单独的
DATE列,可用于在查找冲突之前进行过滤,这通常会更容易。它可以被索引并使 MySQL 更容易计算重叠时间。但是,如果您的约会可以延续到第二天,这将不起作用。 -
@tadman 是的,在示例中是 6 月 1 日,上午 9 点 - 晚上 9 点。但这个窗口会有所不同。
-
哪个版本的 MySQL?
-
为什么 06:00 到 09:00 和 07:00 到 09:00 而不是 6:30 到 9:30 等?
-
@stickybit 只是想检查每个小时的顶部
标签: mysql sql database date datetime