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

时间:2019-01-31 20:26:31

标签: sql c oracle oracle-pro-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;

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

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

1 个答案:

答案 0 :(得分:0)

是的,如果您check the spec,Oracle会说

  

INTEGER ...在输出时,如果列值是实数,则Oracle会截断任何小数部分。

因此,如果要对整数进行四舍五入,则必须在SQL中自行完成操作,例如

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