我有一个名为 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;