2015-07-10 68 views
0

我正在构建简单的预留表单。比方说,我想在2015-07-12到2015-07-21之间预定一辆车。MySQL找到日期范围内的任何记录

在数据库中有记录,表示从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不是我最强的一面。 谢谢!

+0

可能重复(http://stackoverflow.com/questions/16964740/using-mysql-between-clause-with-dates ) – gabe3886

+0

似乎有信息在这里丢失 – Strawberry

+0

所以如果问题是在预定的时间段内保存汽车,您是否有我们可以使用的代码示例? – Viralwarrior012

回答

0

你想任何重叠,不完全重叠。因此,逻辑是:

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

也就是说,有没有车可用,如果预订期结束前开始和周期开始后结束。

+0

“AND”子句中的语法错误 – Sadikhasan

+0

@Sadikhasan。 。 。第一个条款中缺少“AND”。 –

+0

这里是快速小提琴[链接](http://www.sqlfiddle.com/#!2/a67a94/8),不能得到您的建议 – skunks

0

使用下面的查询:使用日期间条使用MySQL]的

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

我正在写答案,同时他写了相同的答案 –