ORACLE Pro*C/C++代码不舍入结果



我有一个名为 My_table 的数据库表,其中有一个名为 timestamps 的列,它包含以下数据。

12-May-19
12-Jun-09
12-Apr-08

当我使用此sql查询将此时间戳转换为自1970年以来时:

SELECT (timestamps - to-date(197001010000, 'yyyymmddhhss)×864) from My_table;

它返回一个舍入的整数,如 1459600,如 ORACLE SQLPLUS 终端上的预期。但是,如果我在 ORACLE Pro*C/C++ 动态代码中执行相同的查询,该代码正确将数据类型设置为整数 (selectda-T(i) = 2),它不会舍入结果,只会截断结果。

如何让它的行为与在 ORACLE SQLPLUS 终端上完全相同?

是的,如果你检查规范,甲骨文说

整数。。。在输出时,如果列值是实数,Oracle 将截断任何小数部分。

因此,如果您希望整数四舍五入,则必须在SQL中自己完成,例如

SELECT round(timestamps - to-date(197001010000, 'yyyymmddhhss')×864) from My_table;

相关内容

  • 没有找到相关文章

最新更新