|
|
|
| 2 поля формата DATE в бд, в одной хранится к примеру дата заезда гостя в отель, во второй - дата выезда.
Гостю надо рассчитать количество дней, которое он проведет в нем.
Т.е. по идее надо вычесть date_end(выезд) из date_begin (заезд) ,
$dateend и $datebegin равны соответствующим значениям в бд, т.е. в том же формате.
$zapros=mysql_query(SELECT TO_DAYS('$dateend')-TO_DAYS('$datebegin') from guests_table where gost_id=222")
$kolvodays=mysql_result($zapros,0,0);
|
К примеру с 25 марта по 30 марта он считает 5 дней, по пальцам - 6 дней, но конечно 30-25=5.
а с 5 марта по 5 мая - 59 дней, по пальцам - 62 дня.
В первом случае он не считает дни включительно, во втором вообще непонятно куда 3 дня пропадают.
DATEDIFF('$dateend','$datebegin')
|
Дает тот же результат,
в первом случае я могу вручную добавить 1 день к результату, а вот во втором случае уже непонятно как действовать.
Тестирую все на Денвере на ноутбуке. | |
|
|
|
|
автор: Valick (в гостях) (24.03.2012 в 19:08) |
|
|
для: segafrompiter
(24.03.2012 в 18:44)
| | $dateend
по идее там должно быть имя поля, а у вас там какая-то переменная | |
|
|
|
|
|
|
|
для: segafrompiter
(24.03.2012 в 18:44)
| | Что у вас за запрос?
$dateend и $datebegin это что? Переменные ПХП или вы имели ввиду имена столбцов?
Если у вас в этих переменных имена столбцов таблицы guests_table, то запрос должен быть таким:
SELECT TO_DAYS(`$dateend`)-TO_DAYS(`$datebegin`) from guests_table where gost_id=222
| и проверьте кавычки.... Либо в начале запроса допишите, либо в конце уберите.
Если у вас в них даты, то часть from guests_table where gost_id=222 вообще не нужна. И запрос должен быть
SELECT TO_DAYS('$dateend')-TO_DAYS('$datebegin')
|
Ну и наконец проверьте их значения все-таки. Так-как запрос
SELECT TO_DAYS( '2012-05-05' ) - TO_DAYS( '2012-03-05' )
| возвращает 61. Что совпадает с вашим "по пальцам"-1. | |
|
|
|
|
|
|
|
для: Sfinks
(24.03.2012 в 19:13)
| | ошибка была в заполненной дате в бд, было 3 марта вместо 5-го марта.
А то, что он не считает дни включительно, решается только +1 или надо вводить время, чтобы высчитывать точно минуты, а из них дни ? | |
|
|
|
|
|
|
|
для: segafrompiter
(24.03.2012 в 19:36)
| | Даже не знаю что на такое ответить..... 5 минус 3 равно 2 или 3 (включительно)? Интересно почему с датой должно быть по другому? Решается (если это конечно можно считать проблемой) так:
SELECT TO_DAYS('2012-05-05') - TO_DAYS('2012-03-05') +1
|
| |
|
|
|