У меня есть таблица в базе данных Oracle, называемая резервированием, которая имеет столбец datetime с именем date_reservation. И у меня есть следующий код:
$sql = "SELECT COUNT(*) AS numberrows FROM reservation WHERE TRUNC(date_reservation)=TO_DATE('15/06/2015', 'dd/mm/yyyy')";
$stid = $this->bd->execute($sql);
$row = $this->bd->get_row($stid, 0);
echo $row['NUMBERROWS'];
Содержимое таблицы:
ID ... DATE_RESERVATION
1 13/06/2015 12:00:00
2 ... 15/06/2015 09:00:00
3 ... 15/06/2015 11:00:00
Когда я выполняю свой PHP-код, я получаю 0, и мне нужно получить 2. Но если я запустил это предложение sql в своем средстве администрирования базы DB, я получу 2.
Если я удалю WHERE CLAUSE из моего кода ($sql = SELECT COUNT(*) AS numberrows FROM reservation
), я получаю количество строк в таблице резервирования.
Поэтому я думаю, что с TRUNC в PHP что-то не так. Как я могу это решить?
Кажется, вы пропустили полукольцо в строке 1:
$sql = SELECT COUNT(*) AS numberrows FROM reservation WHERE TRUNC(date)=TO_DATE('15/06/2015', 'dd/mm/yyyy');
$stid = $this->bd->execute($sql);
$row = $this->bd->get_row($stid, 0);
echo $row['NUMBERROWS'];
Может, это и получилось? :)
В первой строке отсутствуют двоеточия:
$sql = "SELECT COUNT(*) AS numberrows FROM reservation WHERE TRUNC(date)=TO_DATE('15/06/2015', 'dd/mm/yyyy')";
$stid = $this->bd->execute($sql);
$row = $this->bd->get_row($stid, 0);
echo $row['NUMBERROWS'];
Попробуйте это сейчас. Если вы все еще не получили точных результатов, не проверяйте формат даты, который вы используете в запросе.
Первое, на что вы должны обратить внимание, что происходит от trunc(date)
. Проверьте данные в столбце date
, формат даты должен быть точно to_date('15/06/2015','dd/mm/yyyy')
в формате to_date('15/06/2015','dd/mm/yyyy')