2013-07-10 3 views
2

У меня есть таблица в БД с именем оговорок с колоннами: ID, date_from, date_to, obj_id.Проверить наличие выбранного номера в диапазоне дат

В моем приложении мне нужно создать запрос sql, где я могу проверить доступность комнаты (obj_id) в указанном диапазоне дат.

Я пытался использовать что-то вроде следующего, но он не работает хорошо:

select * from `reservations` 
where ((`date_from` <= $from and `date_to` >= $from) 
or (`date_from` <= $to and `date_to` >= $to)) and `obj_id` = $obj 

, например, когда некоторые номера зарезервирован от 2013-07-03 до 2013-07-06, дата, начиная с 2013 года -07-01 до 2013-07-07 рассматривается как бесплатный

+1

«Не работает хорошо» не является надлежащим объяснением проблемы. – zerkms

+0

например, когда какой-то номер зарезервирован с 2013-07-03 по 2013-07-06, дата с 2013-07-01 по 2013-07-07 рассматривается как бесплатный –

+0

, поставив его на вопрос – zerkms

ответ

3

Между раздел sql для фильтрации результатов между двумя заданными датами. См. Это link для деталей.
Вот что вы можете попробовать по вашему запросу!

Select * from `Reservations` where $ToDate between date_from and date_to 
      OR date_to between $FromDate and $ToDate 
      OR $FromDate between date_from and date_to 
      OR date_from between $FromDate and $ToDate 
      AND `obj_id` = $obj; 
+0

Thats it! Спасибо за помощь, ваш запрос работает, как я хочу. –

Смежные вопросы