[英]MySQL find any records between date range
我正在建立简单的预订表格。 假设我要预订2015年7月12日至2015年7月21日之间的汽车。
在数据库中,我们有记录,从2015-07-15到2015-07-20有已预留的汽车(car_id 18)。
这是我的查询,以检查是否有保留车:
SELECT * FROM `reservation` WHERE `reservation_from` <= '2015-07-12' AND `reservation_to` <= '2015-07-21' AND `car_id` = 18
查询后,我得到记录,已经有预订车了。 一切都很好。
现在,假设我要在2015-07-09至2015-07-19期间预订汽车。
这次,我得到了空洞的结果。 但是有记录,该车从2015-07-15到2015-07-20被保留!
我已经使用了与<=
>=
运营商,和没有运气。
是的,这两列都是日期格式。
我想念的是什么? 如何获得此记录,即在所选日期范围内有所有已预订的汽车?
是的,MySQL不是我最强的方面。 谢谢!
您需要任何重叠,而不是完全重叠。 因此逻辑是:
SELECT *
FROM `reservation`
WHERE `reservation_from` <= '2015-07-21' AND
`reservation_to` >= '2015-07-12' AND
`car_id` = 18;
也就是说,如果预订在时段结束之前开始并且在时段开始之后结束,则没有可用的汽车。
使用以下查询:
SELECT *
FROM `reservation`
WHERE
`reservation_from` <= '2015-07-21' AND
`reservation_to` >= '2015-07-12' AND
`car_id` = 18;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.