找到日期板之间的记录(范围)

时间:2013-09-19 06:48:40

标签: sql date

我创建了一张表格,其中我输入了酒店的价格,其中包含日期,这些日期的有效日期。如果我选择特定酒店房价的特定日期,我想要的另一种形式应该显示特定日期,因为每个日期板都有不同的酒店价格

我试过这个

select * from test_hotelrates where Datefrom >= convert(date, '2013-10-01', 103) 
and Dateto <= convert(date, '2013-10-31', 103) and Season = 'Season'

但根据我的需要它不起作用

2 个答案:

答案 0 :(得分:0)

它不起作用,因为您使用2个不同的日期进行比较。在此示例中,您需要10月所有日期的费率。我假设有人想在酒店待一个月。但我想你想检查一下这段时间内每一天的当前费率。因为在那个时期,费率可能会发生变化。

您的查询只会返回时间范围为10-01-2013到10-31-2013的费率。

我认为您需要进行不同的查询或多次运行此查询

select * from test_hotelrates where Datefrom <= convert(date, '2013-10-01', 103) 
and Dateto >= convert(date, '2013-10-01', 103) and Season = 'Season'

select * from test_hotelrates where Datefrom <= convert(date, '2013-10-02', 103) 
and Dateto >= convert(date, '2013-10-02', 103) and Season = 'Season'

select * from test_hotelrates where Datefrom <= convert(date, '2013-10-03', 103) 
and Dateto >= convert(date, '2013-10-03', 103) and Season = 'Season'

等等...

答案 1 :(得分:0)

更改您的查询,如下所示:

select * from test_hotelrates where convert(varchar(10),Datefrom,103) >= convert(varchar(10), '2013-10-01', 103) 
and convert(varchar(10),Dateto,103) <= convert(varchar(10), '2013-10-31', 103) and Season = 'Season'

因为两种格式都应该相同。希望这对你有用