我在编写 mysql 选择查询时遇到问题,我可以在其中获得时间段内的空闲座位数。
让我定义我的问题用户 mysql 查询:
假设我有一张桌子restaurant_booking
。
如果餐厅总共有25个座位,而一位用户想要在下午 2:00 至下午 4:00 之间有15 个座位,如何在预订表中登记到此时有多少座位可用?
如果我看到这个预订表有20个座位已经预订到这个时间段,那么我应该如何才能得到只有 5 个座位可用?
如果有人有任何想法,请告诉我。谢谢。
我在编写 mysql 选择查询时遇到问题,我可以在其中获得时间段内的空闲座位数。
让我定义我的问题用户 mysql 查询:
假设我有一张桌子restaurant_booking
。
如果餐厅总共有25个座位,而一位用户想要在下午 2:00 至下午 4:00 之间有15 个座位,如何在预订表中登记到此时有多少座位可用?
如果我看到这个预订表有20个座位已经预订到这个时间段,那么我应该如何才能得到只有 5 个座位可用?
如果有人有任何想法,请告诉我。谢谢。
逻辑如下:
SELECT (25-SUM(booked_seat)) FROM rest_booking
WHERE end_booking_time>2
AND
start_booking_time<4
--2 & 4 are the new customer's start&end booking time
但我同意@Jesbus,日期应该存储为时间戳。
尝试
select
sum(booked_seat) as seatsAva
from
restaurant_booking
where
STR_TO_DATE(end_booking_time,'%r') < DATE_FORMAT(NOW(), '%r')
之后你可以减去seatsAva
from 25
, 上面query
会给你当前unavailable
座位数的结果
这应该可以解决问题(假设您的列是日期或 unix 时间戳):
SELECT (25-SUM(booked_seat)) AS free_seats
FROM restaurant_booking
WHERE
(end_booking_time>start_time_of_desired_booking AND end_booking_time<=end_time_of_desired_booking)
OR
(start_booking_time>=start_time_of_desired_booking AND
start_booking_time<end_time_of_desired_booking)
用您的值替换 start_time_of_desired_booking 和 end_time_of_desired_booking 让我知道它是否适合您