我在一个名为 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')
的格式完全正确