MySQL查询连续日期范围的记录

时间:2014-02-05 17:01:35

标签: mysql date between

这是我的示例表(房间预订系统):

id   available     room_id
----------------------------
1    2014-02-05    4
2    2014-02-06    4
3    2014-02-07    4
4    2014-02-09    4
5    2014-02-10    4

我想查询2014-02-05和2014-02-10之间是否有ID为4的房间。

我知道我可以使用BETWEEN运算符进行查询,但问题是我需要考虑连续的日期范围,所以它应该返回零记录,因为缺少2014-02-08的记录。 任何想法?

感谢

1 个答案:

答案 0 :(得分:1)

这是一个想法。计算匹配的行数,然后将这些行与该时段中的天数进行比较:

select room_id
from example
where available between date('2014-02-05') and date('2014-02-10')
group by room_id
having count(*) = datediff(date('2014-02-05'), date('2014-02-10')) + 1;