【发布时间】:2018-06-15 07:16:42
【问题描述】:
编辑:戈登发布的查询似乎有问题。如果我在 10 点到 12 点之间进行预订,似乎认为所有 12 点之后的预订都无效,但所有上午 10 点之前的预订都有效。
一些快速而简单的想法最终让我创建了以下查询:
SELECT serverip
FROM server
WHERE serverip NOT IN (SELECT serverip
FROM booking
WHERE startat >= datehere
AND expiresat <= datehere)
LIMIT 1;
假设预订表存储以下内容:
+-----------+-----------+----------+----------+-----------+
| bookingid | serverip | username | startat | expiresat |
+-----------+-----------+----------+----------+-----------+
| 1 | 127.0.0.1 | testuser | 10:00 | 12:00 |
+-----------+-----------+----------+----------+-----------+
如果用户要输入以下数据进行预订:
startat = 9:59
expiresat = 12:01
他们可以轻松绕过我的检查,根据之前存储的预订查看预订时间是否可用。
关于如何更好地解决此问题的任何建议?
我希望不限制用户输入,并希望避免对特定时间段进行硬编码,如果这不是问题,但我会坚持我所拥有的。
感谢您的宝贵时间。
【问题讨论】:
-
你在哪个数据库平台上? (oracle/sql server/mysql)