MySQL-日期之间的日期

时间:2013-05-03 08:17:14

标签: mysql date

我有一个问题,我想与你分享..

说,我们有一个有酒店预订的网站,我们有两个字段DateIn和DateOut。

好吧,我想看看DateIn和DateOut之间的所有日期是否都是免费的......

我想用mysql做..

就像那样:

SELECT hotelname FROM hotel WHERE .. 

(all dates >= DateIn and dates<=DateOut are free) - &gt;我怎么能在mysql中说呢?

提前谢谢!!我认为这不是困难但我找不到......

1 个答案:

答案 0 :(得分:0)

如果field free是bool(tinyInt),你可以尝试这样的事情:

SELECT * FROM (
SELECT `hotelName`, MIN(`available`) AS _available FROM `hotels` WHERE dbdate BETWEEN 20130507 AND 20130511 GROUP BY `hotelName`)a
WHERE _available;

上述查询结果给出了两家酒店的测试结果,当您将20130507更改为20130503时,它将只返回阿姆斯特丹酒店。

以此作为测试表:

CREATE TABLE `hotels` (
  `hotelName` varchar(20) DEFAULT NULL,
  `dbdate` int(11) DEFAULT NULL,
  `available` tinyint(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

/*Data for the table `hotels` */

insert  into `hotels`(`hotelName`,`dbdate`,`available`) values ('Amsterdam Hotel',20130503,1),('Amsterdam Hotel',20130504,1),('Amsterdam Hotel',20130505,1),('Amsterdam Hotel',20130506,1),('Amsterdam Hotel',20130507,1),('Amsterdam Hotel',20130508,1),('Amsterdam Hotel',20130509,1),('Amsterdam Hotel',201305010,1),('Amsterdam Hotel',201305011,1),('Amsterdam Hotel',201305012,1),('Utrecht Hotel',20130503,0),('Utrecht Hotel',20130504,0),('Utrecht Hotel',20130505,0),('Utrecht Hotel',20130506,0),('Utrecht Hotel',20130507,1),('Utrecht Hotel',20130508,1),('Utrecht Hotel',20130509,1),('Utrecht Hotel',201305010,1),('Utrecht Hotel',201305011,1),('Utrecht Hotel',201305012,0);
相关问题