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

时间:2015-07-10 12:30:24

标签: mysql

我正在构建简单的预订表格。比方说,我想预订2015-07-12到2015-07-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不是我最强的一面。 谢谢!

2 个答案:

答案 0 :(得分:0)

您希望任何重叠,而不是完全重叠。所以逻辑是:

SELECT *
FROM `reservation`
WHERE `reservation_from` <= '2015-07-21' AND
      `reservation_to` >= '2015-07-12' AND 
      `car_id` = 18;

也就是说,如果预订在期间结束之前开始并且在期间开始之后结束,则没有可用的汽车。

答案 1 :(得分:0)

使用以下查询:

  SELECT *
  FROM `reservation`
  WHERE
 `reservation_from` <= '2015-07-21' AND 
 `reservation_to` >= '2015-07-12' AND 
 `car_id` = 18;