sql - 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;
它返回一个四舍五入的整数,如 ORACLE SQLPLUS 终端上预期的 1459600。但是,如果我在 ORACLE Pro*C/C++ 动态代码中执行相同的查询,将数据类型正确设置为整数 (selectda-T(i) = 2),它不会对结果进行四舍五入,只会截断结果.
我怎样才能让它的行为与在 ORACLE SQLPLUS 终端上的行为完全相同?
解决方案
是的,如果你检查规范,甲骨文说
INTEGER ... 在输出时,如果列值是实数,Oracle 会截断任何小数部分。
所以如果你想要你的整数四舍五入,你必须在 SQL 中自己做,例如
SELECT round(timestamps - to-date(197001010000, 'yyyymmddhhss')×864) from My_table;
推荐阅读
- python - Elasticsearch Python 将扫描器的结果传递给批量写入器
- .net-core - dotnet core azure web app - okta 应用程序网关
- java - 是否可以要求抽象类的子类覆盖超类的继承方法?
- azure - 无法调整虚拟机大小
- sql-server - 根据 CASE/IIF 标准创建具有新列连接的查询
- azure - 使用 powershell 创建一个启用了非托管数据磁盘的 Azure VM
- jquery - 使用 css 将星号 * 添加到必填字段并在不需要时将其清除
- python - 用字符串对数据框的值进行分组
- java - 如何检查应用程序是否在嵌入式 Tomcat 7 上运行?
- php - 如何为php项目设置端口?