使用 Oracle 11 和 PHP 的 Sum Column - 有什么问题?



试图让一个简单的查询通过并且它不起作用 - 这里的新手。

其他 php 文件和查询运行良好。

$sql = "select sum(rese_nshw) as noshows from tnht_eseo where edta_data = '19.10.01'" ;
$sumParse = oci_parse($conn, $sql);
oci_define_by_name($sumParse, "noshows", $total);
oci_execute($sumParse);
while(oci_fetch($sumParse)){
echo "noshows:". $total;
}

怎么了?只是输出空白。

直接在 Oracle 中运行 SQL 查询,它输出 6 作为此查询的 NOSHOW。

如果EDTA_DATAdate(数据类型(,请不要将其与字符串进行比较,因为'19.10.01'字符串。Oracle 会隐式尝试将其转换为适当的日期,但这不必总是有效。除了 19.10.01 可以是任何内容(2019 年 10 月 1 日或 2001 年 10 月 19 日,或 ...(,具体取决于 NLS 设置。

控制它;查看使用日期文字是否有帮助(它始终具有yyyy-mm-dd格式(:

where edta_data = date '2019-10-01'

此外,如果edta_data包含时间部分(小时、分钟、秒(,那么最简单的选择是截断它,例如

where trunc(edta_data) = date '2019-10-01'

但它会阻止 Oracle 在该列上使用索引(如果存在(。可以修复,没问题;但是 - 首先看看上述任何内容是否有帮助。

您必须使用此处定义的大写:

column_name 查询中使用的列名。

对 Oracle 的默认非区分大小写的列名使用大写。 对区分大小写的列名称使用确切的列名大小写。

从: https://www.php.net/manual/en/function.oci-define-by-name.php

然后: oci_define_by_name($sumParse,"NOSHOW",$total(;

相关内容

最新更新