在PHP的where子句中使用TRUNC执行SQL语句时,我没有得到任何结果
我在Oracle数据库中有一个名为reservation的表,它有一个名为date\u reservation的datetime列。我有以下代码:在PHP的where子句中使用TRUNC执行SQL语句时,我没有得到任何结果,php,sql,oracle,Php,Sql,Oracle,我在Oracle数据库中有一个名为reservation的表,它有一个名为date\u reservation的datetime列。我有以下代码: $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-
$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。
但是如果我在DB管理工具中执行这个sql语句,我会得到2
如果我从代码$sql=SELECT COUNT*AS numberrows中删除WHERE子句,我将获得保留表中的行数
所以我猜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'];
现在试试这个。如果您仍然没有得到准确的结果,请检查您在查询中使用的日期格式。您必须注意的第一件事是truncdate的内容。检查日期列中的数据,日期类型的格式必须与截止日期'15/06/2015','dd/mm/yyyy'的格式完全正确。我猜这与PHP中的日期掩码有关,我不懂PHP,所以它没有什么用处,不使用trunc就可以解决它。当你获得大量数据时,速度会非常慢。相反,使用where date>=yourdate和date