gpt4 book ai didi

mysql - 查看[时间长度]是否可用于多行预订的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 16:04:26 25 4
gpt4 key购买 nike

我有以下 SQL 表列:

reservationId - int
startDateTime - datetime
endDateTime - datetime

我的问题是这样的:

我想看看某一天是否有一个[时间]段可以安排[时间]预订。

例如,我正在寻找 6 月 1 日上午 9 点至晚上 9 点 2 小时的预订。

6 月 1 日目前有两个预订:

10am - 2pm
4pm - 6pm

我希望我的查询返回可用于预订的时间。即:

2pm - 4pm
6pm - 8pm
7pm - 9pm

关于如何做到这一点有什么想法吗?

最佳答案

这不是一个完整的答案,但它应该能让你成功一半:

SELECT o.openingStart, IFNULL(o.openingEnd, '2019-04-26 21:00:00') AS openingEnd
FROM (
SELECT r.endDateTime AS openingStart
, (SELECT r2.startDateTime
FROM reservations AS r2
WHERE r2.startDateTime > r.endDateTime
AND r2.endDateTime < '2019-04-27 00:00:00'
ORDER BY r2.startDateTime ASC
LIMIT 1
) AS openingEnd
FROM ( SELECT startDateTime, endDateTime
FROM reservations
WHERE startDateTime >= '2019-04-26 00:00:00'
AND endDateTime < '2019-04-27 00:00:00'
UNION
SELECT '2019-04-26 00:00:00', '2019-04-26 09:00:00'
) AS r
) AS o

在此之后,您只想按两个小时或更长时间的空缺进行过滤,然后可能需要加入某种静态的时间表,以将较大的空缺扩展到它们可以容纳的较小空缺。

IFNULL实际上可以在内部查询中使用,但我认为这样可能更清晰一些。

注意:其中的所有文字日期时间值都应该可以替换为适当计算的参数值。

关于mysql - 查看[时间长度]是否可用于多行预订的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55874115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com