在日期重叠之间使用 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`;
已编辑:缺少等于 =
符号
我正在使用 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`;
已编辑:缺少等于 =
符号