我正在尝试开发酒店预订系统。在我的搜索表单中,我有两个日期选择器(出发日期和到达日期)和目的地。我的日期有问题,在我的数据库中,我有两个表“价格”和“季节”,可以通过季节的 id 与关节连接。
表结构:
CREATE TABLE IF NOT EXISTS `prices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`prix_single` varchar(255) NOT NULL,
`prix_double` varchar(255) NOT NULL,
`prix_triple` varchar(255) NOT NULL,
`idseason` varchar(255) NOT NULL,
`idhotel` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ;
CREATE TABLE IF NOT EXISTS `season` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`begin_date` varchar(255) NOT NULL,
`end_date` varchar(255) NOT NULL,
`idhotel` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
例如第一季我有 1 月 1 日至 2 月 28 日期间(每人每晚 100 美元) 3 月 1 日至 4 月 28 日(每人每晚 120 美元)
如果我的客户选择时间段 [2 月 26 日至 3 月 3 日],我如何使用 SQL 进行计算?我试过这个:
SELECT *
FROM season, prices
WHERE season.id=prices.season
and (season.begin_season BETWEEN 2012/02/26 AND 2012/03/03 OR season.fin_season BETWEEN 2012/02/26 AND 2012/03/03)
它对我不起作用,它返回给我的结果是空的,我的数据库中有两个赛季
id begin_season end_season idhotel
32 10/07/2012 28/09/2012 52
35 29/09/2012 29/10/2012 52
我怎样才能做到这一点?非常感谢!
编辑:我已经改变了我的表格和我的查询,如下所示:
CREATE TABLE IF NOT EXISTS `season` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`begin_season` date NOT NULL,
`end_season` date NOT NULL,
`idhotel` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `season` (`id`, `begin_season`, `end_season`, `idhotel`) VALUES
(32, '2012-08-09', '2012-09-09', '52'),
(35, '2012-09-10', '2012-10-30', '52');
CREATE TABLE IF NOT EXISTS `prices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`price_single` varchar(255) NOT NULL,
`price_double` varchar(255) NOT NULL,
`price_triple` varchar(255) NOT NULL,
`idseason` varchar(255) NOT NULL,
`idhotel` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `prices` (`id`, `price_single`, `price_double`, `price_triple`, `idseason`, `idhotel`) VALUES
(31, '10', '20', '30', 32, 52),
(32, '20', '40', '60', 35, 52),
SELECT * FROM season, prices WHERE season.id=prices.idseason and (season.begin_season BETWEEN '2012-09-30' AND '2012-10-27' OR season.end_season BETWEEN '2012-09-30' AND '2012-10-27')
我的结果是空的。