我需要选择一个房价,其中登记日期和退房日期在指定的日期范围之间。这些费率根据其条件单独命名。房费取决于所选日期。这是我的代码:
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
条件是:
现在,我想从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。
答案 0 :(得分: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是结束日期。
答案 1 :(得分:0)
使用to_date('dateInString','format')将字符串转换为reb_date1和reb_date2的日期,如果你对rate_min_stay进行大于比较,则直接使用不带引号的数值