【发布时间】:2012-11-05 01:44:22
【问题描述】:
有人就类似主题提出了一些问题,但我找不到解决这个特定问题的方法,非常感谢您的意见。
我正在开发一个预订引擎,用户可以在其中在线预订某些服务。我一直在寻找和显示特定日期(或一周)内的可用时间段。我知道所需时段的长度(例如 1 小时)和可预订时段的营业时间(例如 09:00 - 18:00)。此外,我有一个 MySQL 表来存储已经存在的约会。与我的问题相关的列如下所示:
id start (datetime) end (datetime)
1 '2012-11-16 13:00:00' '2012-11-16 14:30:00'
2 '2012-11-16 15:00:00' '2012-11-16 16:00:00'
3 '2012-11-17 12:00:00' '2012-11-16 15:45:00'
4 '2012-11-17 13:00:00' '2012-11-16 16:15:00'
...
现在鉴于上述信息,我无法找到一个好的解决方案(在 MySQL 或 PHP 中)来检索可用时隙列表。还有一个条件:时隙只能以季度为单位开始。 IE。对于上面 16 日可用一小时时段的示例数据,将是:
09:00, 09:15, 09:30, 09:45, 10:00, ..., 12:00, 16:00, 16:15, ..., 17:00.
请注意,即使可能存在重叠时间(如示例数据中所示),可用时间段也不能重叠。
您认为解决此问题的最佳方法是什么?
【问题讨论】:
-
重叠的条件是什么?他们是为一个人预订服务,还是可以同时进行多个约会?
-
这是一个人的预订。普通用户只能预订 100% 免费的时间段,即。没有重叠。管理员有一个不同/更复杂的日历,允许重叠(因为他们可能知道他们可以在某些情况下处理重叠)。对于上面的问题,我想唯一重要的一点是数据库表中可能存在重叠的插槽,系统应该在其中尝试查找可用性。