嗨我一直试图让我自己的系统检查房间价格后阅读其他问题在这里StackOverflow。酒店预订价格SQL问题
我的查询工作正常,生产的天正确的号码时,没有在预订日期没有打分的重叠,但如果是重叠我得到我的结果的第二行额外的一天。
例如,一个人到达在2011-04-14和叶2011-04-16(2天)。 15日的汇率变化从66到70,所以他应该有66天的利率1天和70天的利率1天。
我曾尝试没有TIMEDATE - 只是日期,但同样的事情发生。
查询
SELECT rates.rate_id, rate_start_date, rate_end_date, rate_price,
(DATEDIFF(IF (rate_end_date > '2011-04-16 14:00:00' , '2011-04-16 14:00:00', rate_end_date),
IF (rate_start_date < '2011-04-14 12:00:00' , '2011-04-14 12:00:00' , rate_start_date)) +1)
AS days FROM rates
WHERE rate_start_date <= '2011-04-16 14:00:00' AND rate_end_date > '2011-04-14 12:00:00'
ORDER BY rate_price ASC
率表
rate_id rate rate_start_date rate_end_date
1 70 2011-04-15 00:00:00 2011-05-31 23:59:59
2 80 2011-06-01 00:00:00 2011-06-30 23:59:59
3 100 2011-07-01 00:00:00 2011-08-31 23:59:59
4 80 2011-09-01 00:00:00 2011-09-30 23:59:59
5 70 2011-10-01 00:00:00 2011-10-31 23:59:59
6 45 2011-11-01 00:00:00 2011-12-31 23:59:59
0 66 2011-01-01 00:00:00 2011-04-14 23:59:59
结果
rate_id rate_start_date rate_end_date rate days
0 2011-01-01 00:00:00 2011-04-14 23:59:59 66 1
1 2011-04-15 00:00:00 2011-05-31 23:59:59 70 2 <----this should be 1 day
我真的很感激任何帮助或为什么我的查询给了我第二次的额外的一天一个交代一排结果。
感谢