繁体   English   中英

MySQL找到日期范围之间的任何记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM