Я не получаю никакого результата при выполнении предложения SQL, где я использую TRUNC в предложении WHERE в PHP

1

У меня есть таблица в базе данных 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 что-то не так. Как я могу это решить?

  • 0
    я бы предположил, что это как-то связано с маской даты в PHP, я не знаю PHP, поэтому не может быть более полезным, чем это
  • 0
    Решите это, не используя trunc как этот. Когда вы получаете много данных, это очень медленно. Вместо этого используйте где date> = yourdate и date <(yourdate + 1)
Показать ещё 1 комментарий
Теги:

3 ответа

0

Кажется, вы пропустили полукольцо в строке 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'];

Может, это и получилось? :)

  • 0
    Я забыл написать двоеточия здесь, так что это не проблема
0

В первой строке отсутствуют двоеточия:

$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'];

Попробуйте это сейчас. Если вы все еще не получили точных результатов, не проверяйте формат даты, который вы используете в запросе.

  • 0
    Я забыл написать двоеточия здесь. Так что это не проблема. И формат даты правильный
-1

Первое, на что вы должны обратить внимание, что происходит от trunc(date). Проверьте данные в столбце date, формат даты должен быть точно to_date('15/06/2015','dd/mm/yyyy') в формате to_date('15/06/2015','dd/mm/yyyy')

  • 0
    Неправда. Столбец даты не имеет формата. Форматы применяются, когда вы имеете дело со строкой, а не с типом даты.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню