MySQL 显示可用时间


MySQL Show available times?

+-----------+----------+------------+--------------+-------------+------------------+-----------------+
| bookingID | schoolID | customerID | instructorID | bookingDate | bookingStartTime | bookingStopTime |
+-----------+----------+------------+--------------+-------------+------------------+-----------------+
|         1 |        1 |          1 |           15 | 2015-01-01  | 09:00:00         | 10:00:00        |
|         2 |        1 |          1 |           15 | 2015-01-01  | 15:00:00         | 16:00:00        |
|         3 |        1 |          1 |           15 | 2015-01-01  | 12:00:00         | 13:30:00        |
|         4 |        1 |          1 |           15 | 2015-01-01  | 11:00:00         | 12:00:00        |
+-----------+----------+------------+--------------+-------------+------------------+-----------------+

上表显示了客户预订(bookingDate、bookingStartTime、bookingStopTime)。

正在尝试找出一个SQL查询,该查询将允许我查询表并查找给定日期在特定时间内的所有可用时间/时段。

例如,一位客户要求在 2015 年 1 月 1 日预订 1 小时,我们的营业时间为 09:00 至 17:00。 我想查询该表并收到以下结果...

10:00 > 11:00
14:00 > 15:00
16:00 > 17:00

这是否仅使用 SQL 即可,或者我也需要一些 PHP?

我还通过使用日期时间字段而不是日期尝试了一些查询(如上所示)。

任何帮助将不胜感激。

SELECT 
  * 
FROM 
  your_table 
WHERE 
  bookingDate = '$your_date' AND 
  ('$your_start_time' >= bookingStartTime AND '$your_start_time' < bookingStopTime OR 
  (bookingStartTime >= '$your_start_time' AND bookingStartTime < '$your_end_time'))

该查询将为您提供白天可用的所有时间。(您可以添加开放时间的时间限制)