您好我的情况如下 - :
我必须在上午10点到11点之间的特定日期预订资源,因此必须在该日期检查该特定资源是否免费。
请注意,资源已在下列时间预订。 09.00 AM至10.AM& 上午11点至下午12点
我必须查询表格是否可以在上午10点到11点预订。如果是,则返回true。
答案 0 :(得分:0)
您的SQL查询需要确保没有其他预订与您尝试预订的时间间隔重叠。
如果您的预订被存储为包含独占时间段,则表格如下:
CREATE TABLE reservations (
rsrc_id INTEGER NOT NULL,
dtbegin DATETIME NOT NULL,
dtend DATETIME NOT NULL,
booking_event_id INTEGER NOT NULL,
PRIMARY KEY (rsrc_id, dtbegin, dtend)
)
然后,下面的搜索需要返回一个零,以证明资源1234目前可以在2月1日上午10点到11点预订:
SELECT COUNT(*) FROM reservations
WHERE rsrc_id = 1234 AND
(
( '2015-02-01 10:00:00' >= dtbegin AND '2015-02-01 10:00:00' < dtend )
OR
( '2015-02-01 11:00:00' > dtbegin AND '2015-02-01 11:00:00' <= dtend )
OR
( dtbegin >= '2015-02-01 10:00:00' AND dtend <= '2015-02-01 11:00:00' )
)