2013-08-24 91 views
2
條款

我在我的桌子下面的記錄稱爲「rooms_prices」凡在PHP/MySQL的

id room_id  date_from date_to price 
55 11   02/01/2014 12/31/2014 2250 

每當我試圖在我的PHP代碼執行SQL語句,我總是得到一個結果的日期我查詢不在日期範圍內。

這裏是我的SQL語句:

SELECT price FROM rooms_prices WHERE room_id = 11 AND DATE_FORMAT(date_from, '%m/%d/%Y') <= '12/01/2013' AND DATE_FORMAT(date_to, '%m/%d/%Y') >= '12/01/2013' 

這個SQL語句總是輸出2250它應該只返回記錄如果日期是2014年2月1日和2014年12月31日之間。

任何人都知道如何解決這個問題?

+0

使用'BETWEEN'或'或'聲明。您正在明確選擇等於(找到)或小於02.01.2014且等於或大於(找到)的記錄,而不是02.01.2014 –

回答

2

使用在Y-M-d順序日期格式:

SELECT price 
FROM rooms_prices 
WHERE room_id = 11 AND 
     DATE_FORMAT(date_from, '%Y-%m-%d') <= '2013-12-01' AND 
     DATE_FORMAT(date_to, '%Y-%m-%d') >= '2013-12-01'; 

你正在做的比較字符串,這就是爲什麼你的版本是失敗的。

它實際上會更好做比較的日期:

SELECT price 
FROM rooms_prices 
WHERE room_id = 11 AND 
     date_from <= date('2013-12-01') AND 
     date_to >= date('2013-12-01'); 

甚至只使用between

WHERE room_id = 11 AND 
     date('2013-12-01') between date_from and date_to 
+0

非常感謝您...... – jaypabs