我创建了一个存储过程:
CREATE PROCEDURE `CheckSlotAvailability`(IN slotId INT)
BEGIN
DROP TEMPORARY TABLE IF EXISTS tempres1;
CREATE TEMPORARY TABLE tempres1
SELECT
`slot_id`,
`customer_id`,
IFNULL(`start`, 'empty') AS `start`,
IFNULL(`end`, 'empty') AS `end`,
IFNULL(`in`, 'empty') AS `in`,
IFNULL(`out`, 'empty') AS `out`,
`parking_type`,
`status`
FROM reservations;
DROP TEMPORARY TABLE IF EXISTS tempres2;
CREATE TEMPORARY TABLE tempres2
SELECT
slot_id,
`customer_id`,
MIN(`start`) AS `start`,
MAX(`end`) AS `end`,
MIN(`in`) AS `in`,
MAX(`out`) AS `out`,
`parking_type`,
`status`
FROM tempres1
GROUP BY slot_id, customer_id;
DROP TEMPORARY TABLE IF EXISTS tempres3;
CREATE TEMPORARY TABLE tempres3
SELECT * FROM tempres2 WHERE slot_id = slotId;
SELECT * FROM TEMPRES3;
END
它返回停车位的保留小时数:
从该表中:
我们如何从这件事中获得可用的工作时间?
比方说,我 for each Slot_id设置了小时范围,
起点:2023-05-30 15:00:00
完:9999-12-30 00:00:00
由于基于2023-05-30 18:00:00
以上的镜像,直到2023-05-30 20:00:00
被占用,这意味着唯一可用的小时数如下:
-
2023-05-30 15:00:00
到2023-05-30 17:59:59
-
2023-05-30 20:00:00
到9999-12-30 00:00:00
请注意,一个时段可能会有多个预订,我只需要得到可用的时间.
加入时间:清华2007年01月25日下午3:33
几天来我一直在努力解决它,但对我来说似乎是不可能的:
先谢谢你.