在执行在 PHP 的 WHERE 子句中使用 TRUNC 的 SQL 句子时,我没有得到任何结果


I don't get any result when executing a SQL sentence where I use TRUNC in the WHERE clause in PHP

我在一个名为 reservation 的 Oracle 数据库中有一个名为 reservation 的表,该表具有一个名为 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 句子,我会得到 2。

如果我从代码中删除 WHERE 子句 ( $sql = SELECT COUNT(*) AS numberrows FROM reservation ),我会得到预订表中的行数。

所以我想 PHP 中的 TRUNC 有问题。我该如何解决?

似乎您错过了第 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')的格式完全正确