如何查询不同日期的价格

时间:2012-04-19 01:06:14

标签: php mysql

我目前正在建立一个酒店预订系统,并想知道如何查询我的tbl_prices表中的价格列。

以下是我的表格的样子:

id          date_from          date_to         price          is_default
1           00-00-0000         00-00-0000      $95               1
2           05-25-2012         05-29-2012      $100              0
3           06-20-2012         06-24-2012      $90               0

第一行是默认价格。因此,如果有人保留不在第2行和第3行的日期,则价格为95美元。但如果预订日期落在第2和第3行,则价格应为100美元或90美元。

如果客人想要在2012年5月24日至5月26日期间办理登机手续,那么价格应为

第1天= 95美元 第二天= 100美元

2012年5月26日将不收取费用,因为这是结帐日期。

2 个答案:

答案 0 :(得分:0)

一个非常直接的解决方案是:

$from = 5-24-2012$till = 5-26-2012

select price, date_to from my_table where date_from <= $from 
ORDER BY date_from ASC LIMIT 1

然后,您可以在date_to(由此查询接收)和$ till。

之间进行检查
if($till <= $date_to) {
    // total cost is price * no. of days of stay
}
else {
   // repeat above query, this time with date_to parameter in where clause
   // total cost is price1 * no. of days in 1st range + .....
}

答案 1 :(得分:0)

如果您每天查询一次,则只有一个默认值且价格没有重叠期间:

SELECT price FROM tbl_prices
WHERE ($input_date >= date_from AND $input_date <= date_to) 
      OR is_default = 1
ORDER BY is_default
LIMIT 1