【发布时间】:2012-07-27 06:05:47
【问题描述】:
我有两张桌子
---------------------- |车辆 | ---------------------- + 身份证 + |姓名 | + available_from_date + | available_from_time | + available_to_date + |可用时间 | ---------------------- ---------------------- |保留_车辆 | ---------------------- + 身份证 + |车辆编号 | + reserved_from_date + | reserved_from_time | + reserved_to_date + |保留时间 | ----------------------我想查询车辆表,以便仅获取满足可用日期和时间且还没有为该时间预留的车辆。
例如,我想搜索从日期 2012-07-27 和时间 10:00 到日期 2012-08-15 和时间 14:00 可用的车辆。
如何一次查询解决上述问题?
提前致谢。 :)
【问题讨论】:
-
我尝试了以下方式,但结果错误 SELECT * FROM
vehiclesWHERE (available_from_date = "07/31/2012" AND available_to_time >= "9:00:00") -
但是您甚至需要检查保留的日期,否则它们对您来说无关紧要?
-
为什么不将 to 和 from 字段存储为
DATETIME类型。这将使您的事情变得更容易,因为您将可以使用许多强大的日期操作和比较功能。 -
SELECT * FROM Vehicle WHERE id NOT IN(SELECT id FROM Reserved_Vehicles) AND (available_from_date = "2012-08-14" AND available_to_time >= "10:00:00") 由于时间检查,此查询排除了可用车辆,因为查询中的时间是 10:00:00 而不是 09:00:00。跨度>
标签: mysql database datetime join