2013-08-24 2 views
2

я следующая запись в моей таблице называется «rooms_prices»Где Статья в PHP/MySQL

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

Всякий раз, когда я пытался выполнить оператор SQL в моем PHP кода, я всегда получаю результат, когда дата I queried не находится в пределах диапазона дат.

Вот мой 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. Она должна возвращать только запись, если дата между 02/01/2014 и 12/31/2014.

Кто-нибудь знает, как это исправить?

+0

использование '' BETWEEN' или OR' заявление. Вы явно выбираете запись, которая равна (найдена) или меньше 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