我有一个名为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终端上的行为完全相同?
答案 0 :(得分:0)
是的,如果您check the spec,Oracle会说
INTEGER ...在输出时,如果列值是实数,则Oracle会截断任何小数部分。
因此,如果要对整数进行四舍五入,则必须在SQL中自行完成操作,例如
SELECT round(timestamps - to-date(197001010000, 'yyyymmddhhss')×864) from My_table;