这是我的数据库(酒店的免费房间,简化)
rooms_available :
id date_available room_id
================================
1 2013-12-19 2
2 2013-12-20 2
3 2013-12-21 2
4 2013-12-22 2
5 2013-12-23 2
6 2013-12-25 3
间:
id name minimal_range
================================
2 Apartment A 5
3 Apartment B 1
我想查询2013-12-20和2013-12-22之间可用的所有房间
我的查询如下:
select *
from rooms_available
where (date='2013-12-20' OR date='2013-12-21' OR date='2013-12-22')
我的问题:
由于
答案 0 :(得分:1)
日期> ='2013-12-20'和日期< ='2013-12-22'
答案 1 :(得分:1)
SELECT * FROM rooms_available WHERE `date_available` BETWEEN "2013-12-20 " AND "2012-03-31"
答案 2 :(得分:0)
我没有对此进行测试,但它应该指向正确的方向,尤其是关于最小范围的问题的第二部分。
SELECT t1.id as id, t1.date_available as date_available, t1.room_id
FROM rooms_availble as t1 JOIN rooms as t2 on t1.room_id = t2.id
WHERE t1.date_available BETWEEN DATE('2013-12-20') AND DATE('2012-03-31') AND
t2.minimal_range <= datediff('2013-12-22', '2012-12-20');
mysql datediff函数将返回两个日期之间的天数,然后您可以将它与房间联接表中的minimal_range进行比较。您也可以考虑将开始日期和结束日期绑定到变量,这样您只需要编写一次日期。