МЕЖДУ не работает в MySQL - PullRequest
       12

МЕЖДУ не работает в MySQL

0 голосов
/ 10 декабря 2011

Я реализую сайт бронирования отелей, где владелец отеля может забронировать номера в зависимости от наличия.Для проверки количества доступных номеров я написал код:

$q=" SELECT * 
        FROM  tbl_roombook
        WHERE
        hotel_id='$h_id'AND
        start_date
        BETWEEN  '$date1'
        AND  '$date2'
        AND end_date
        BETWEEN  '$date1'
        AND  '$date2'

    ";
$res = $this->db->returnArrayOfObject($q);
//var_dump($res);

В моей базе данных забронировано 2 номера с 2011-12-25 по 2011-12-31.И мой echo $date1 равен 2011-12-29, а $echo date2 равен 2011-12-30.Но $q возвращает пустые результаты!Почему?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Пример не вернет результатов для предоставленных вами записей date1 и date2. Это потому, что, принимая ваши start_date = 2011-12-25 и end_date = 2011-12-31.
Ни одно из этих значений не входит в указанный вами диапазон дат 2011-12-29 and 2011-12-30.
Следовательно, результат не генерируется. Вы можете использовать его в обратном порядке

'$date1' BETWEEN start_date AND end_date 
 OR  '$date2' BETWEEN start_date AND end_date 
0 голосов
/ 10 декабря 2011

Для примера, который вы привели, он не должен возвращать результатов ... start_date = 2011-12-25, а не между 2011-12-29 и 2011-12-30, поэтому выражение здесь неверно.Я думаю, что вы хотите, чтобы увидеть, есть ли какое-либо совпадение между зарезервированным диапазоном и новым возможным диапазоном бронирования правильно?

Чтобы сделать это, вы захотите вместо этого проверить

start_date > '$date2' OR end_date < '$date1; 

, предполагаячто $ date1 всегда перед $ date2.

...