在日期重叠之间使用 mysql 进行预订

Using mysql between for date overlap for booking purpose

我正在使用 mysql BETWEEN 语句来查找 dates.It return 之间的重叠,结果相当不错。不过还是有几个问题希望可以resolved.Thanks.

这是我的测试数据库

booking_id |venue_id |startdate   | enddate
1001       |3        | 2017-07-21 |2017-07-23

这是我的查询;我的概念是命中查询的日期之一,因此它将 return true.so 我正在使用 OR 来测试它们。

SELECT * FROM `booking` WHERE ('user_inputdate_1' BETWEEN startdate AND enddate) OR ('user_inputdate_2' BETWEEN startdate AND enddate)'

我的测试结果

user_inputdate_1  user_inputdate_2  Result 
2017-07-19        2017-07-23         true 
2017-07-22        2017-07-24         true 
2017-07-21        2017-07-24         true 
2017-07-20        2017-07-24         false => this is the problem (it should be true)

PS:如果有其他方法可以解决,我会采纳。我一直在尝试很多查询,但它们对我不起作用。

最后,感谢大家的努力。

对于给定的输入日期:

2017-07-20 & 2017-07-24

start date 均不大于或等于 2017-07-21,并且 end date 也不小于或等于 2017-07-23。这就是为什么结果false,是对的

所以不要 between,试试:

WHERE 'user_inputdate_1' <= `enddate`
OR 'user_inputdate_2' => `startdate`;

已编辑:缺少等于 = 符号