1

我需要选择入住日期和退房日期在指定日期范围之间的房价。这些费率根据其条件分别命名。房间费用取决于所选日期。这是我的代码:

rate_eb

rate_name     rate_starts     rate_ends     rate_discount     rate_min_stay
---------------------------------------------------------------------------
Low Season    2013-05-01      2013-10-31    20                3            
High Season1  2013-11-01      2013-12-19    20                4
High Season2  2013-02-21      2013-04-31    20                4
Peak Season   2013-12-20      2014-02-20    20                5            

条件是:

  1. 预订必须介于rate_startsrate_ends之间。
  2. 住宿总晚数必须大于或等于rate_min_stay
  3. rate_discount是来自另一个表的主费率的折扣百分比。假设主价格为 100,则此预订将应用 80 的价格。

现在,我想从 rate_db 中获取具有日期范围的数据——尤其是对于 rate_discount。这是我的mySQL:

select rate_discount 
from rate_eb 
where rate_min_stay<='4' 
and reb_starts>='2013-06-19' 
and reb_ends<='2013-06-23'

从上面的代码。我预计淡季的 rate_discount=20但所有小于或等于 4 的价格都被选中。

现在,请给我建议解决方案。如何重新编写代码以访问 rate_starts 和 rate_ends 之间的 rate_discount。

4

2 回答 2

2

我假设访问者可以输入一个时期,而不仅仅是一个日期。如果那个时期的开始日期是淡季而结束日期是旺季会怎样?那你希望看到哪个比率?

select rate_discount 
from rate_eb 
where rate_min_stay <= abs( datediff( reb_date2, reb_date1 ) )
and reb_date1 between rate_starts and rate_ends
and reb_date2 between rate_starts and rate_ends

我假设 reb_date1 是访问者输入的开始日期,而 reb_date2 是结束日期。

于 2013-03-10T11:04:13.250 回答
0

使用 to_date('dateInString','format') 将字符串转换为 reb_date1 和 reb_date2 的日期,如果您对 rate_min_stay 进行大于比较,则直接使用未加引号的数值

于 2013-03-10T11:10:13.150 回答