如何从日期之间的条件检索数据库表中的数据?

时间:2013-05-06 07:35:51

标签: mysql sql

我需要查看酒店可用的酒店和房间数量一段时间(start_date和end_date。

我有一个表测试(id,date,qty,hotel_id)。我需要访问所有酒店ID,其中包含一些数量条件(例如,数量> 2)和两个日期之间的日期(例如:测试表的日期字段的日期值应大于'2013-05-06 '和结束日期小于'2013-05-10')。

我尝试了这个查询:

select hotel_id
  from test
 where qty>2
   and date between '2013-05-06' and '2013-05-10';

但是,另一个条件是在给定日期之间必须有所有日期。即日期字段应包含所有日期日期值:'2013-05-06','2013-05-07','2013-05-08','2013-05-09','2013-05-10' 。如果缺少上述任何日期,则应返回空结果集。如果所有日期都可以使用qty> 2(let),那么它应该返回hotel_ids列表。

如何在单个MySQL查询中完成?

1 个答案:

答案 0 :(得分:0)

尝试

SELECT `hotel_id`
  FROM test
 WHERE `date` BETWEEN '2013-05-06' AND '2013-05-10'
   AND `qty` >= 2
 GROUP BY `hotel_id`
 HAVING COUNT(*) = (DATEDIFF('2013-05-10', '2013-05-06') + 1)

<强> SQLFiddle