2012-09-09 33 views
0

我遇到了一個我無法弄清的嚴重問題。我試圖從MySQL數據庫中返回具有兩個給定日期之間的開始日期和結束日期的行。這是我的PHP代碼來查詢數據庫:在mysql的日期範圍內獲取行

$getRooms = mysql_query(" 
    SELECT * 
    FROM Tarifas 
    WHERE Start BETWEEN '2013-01-10' AND '2013-01-13' 
    AND End BETWEEN '2013-01-10' AND '2013-01-13' 
"); 

起點和終點都設置爲日期字段

我的數據庫設置如下:

ID | RoomId | Start  | End 
-------------------------------------- 
4 | 34562 | 2013-01-09 | 2013-10-23 

如果有人能幫助我搞清楚爲什麼這不起作用,這將不勝感激!

+2

您是否遇到PHP或MySQL錯誤? – Jocelyn

+1

除非您提供的數據不正確,否則表中的結束日期爲「2013-10-23」,但您正在查找「結束日期」BETWEEN'2013-01-10'和'2013-01- 13' - 數據不匹配,所以你不會得到任何結果。 – Taryn

+0

你有符合這個標準的記錄嗎? –

回答

3

查看您的查詢和樣本數據,也許您正在尋找SQL Query to Find Overlapping or Conflicting Date Ranges。查詢將是:

SELECT * 
FROM Tarifas 
WHERE '2013-01-13' >= `Start` AND `End` >= '2013-01-10' 

2013-01-13大於2013-01-09 - 和 - 2013-10-23大於2013-01-10如此,因爲它衝突/與指定的日期重疊Tarifas#4將被退回。

+0

他只聲明「我試圖從MySql數據庫返回行,在兩個給定日期和結束日期之間有一個開始日期以及「。 – Tony

+0

我剛剛從樣本數據和查詢(以及關於預訂「房間」和速率計劃的小知識)中推斷出了這一點。輸入範圍是'2013-01-13'到'2013-01-13',他可能希望返回行ID#4。 –

+0

這個效果很好,我只是稍微修改了一下WHERE start_date <='mydate'AND end_date> ='mydate' 非常感謝 – liveandream