Mysql查询使用两个日期之间检索记录

时间:2013-08-07 10:59:50

标签: mysql between

我有一个要求,我完全混淆了如何编写查询。我是这家公司的新手,所以请帮助我

用户将选择以下日期:

例: fromDate:2013-08-02 toDate:2013-09-03(YYYY-MM-DD)

id  resort_id   room_id Date1       Date2       price
5   35      45          2013-11-01  2013-11-30  3000.00
6   35      50          2013-07-25  2013-08-25  2000.00
7   35      541         2013-07-25  2013-08-25  4000.00
8   35      541         2013-08-26  2013-09-26  4000.00

现在我应该按房间ID为日期组的每个日期或价格总和得到基于价格的结果

预期结果

id  resort_id   room_id     Date1       Date2       price
6   35      50              2013-07-25  2013-08-25  2000.00
7   35      541             2013-07-25  2013-08-25  4000.00
8   35      541             2013-08-26  2013-09-26  4000.00

OR

id  resort_id      room_id  price
6   35             50       2000.00
7   35             541      8000.00

6 个答案:

答案 0 :(得分:3)

SELECT * FROM lr_price_peak_rates  WHERE  `from_date`>='2014-04-08' AND `to_date`<='2014-04-30' 

尝试上面的查询它可以正常工作

答案 1 :(得分:2)

尝试此查询

SELECT * FROM `rooms` WHERE "2013-08-02" between Date1 AND Date2 UNION 
SELECT * FROM `rooms` WHERE "2013-09-03" BETWEEN Date1 AND Date2

它是一个单一的查询。将其分为两行以便于阅读。我很确定这个查询缺少一些东西。我需要一个更大的测试集来验证。这不会选择中间案例。 使用用户选择的日期更改第一个日期。

答案 2 :(得分:1)

尝试此查询

SELECT
  id,
  resort_id,
  room_id,
  Date1,
  Date2,
  SUM(price) AS Total_Price
FROM
  MyTable
WHERE Date1> '2013-02-08' AND Date2 < '2013-02-09'

答案 3 :(得分:1)

嘿试试这个(sql server)

  

SELECT room_id,SUM(price)FROM @table WHERE date1&gt; ='07/25 / 2013'and date2&lt; ='09/26/2013'GROUP BY room_id

答案 4 :(得分:0)

select * from table_name where date1 > '08/02/2013' AND date2 < '09/02/2013' ORDER BY date1 ASC, price ASC

答案 5 :(得分:0)

SELECT * FROM rooms Date1和Date2 UNION之间的日期 SELECT * FROM rooms日期BETWEEN Date1和Date2