您现在的位置是:网站首页> 编程资料编程资料
Oracle计算时间差为毫秒的实现代码_oracle_
2023-05-27
449人已围观
简介 Oracle计算时间差为毫秒的实现代码_oracle_
Oracle 中我们知道用 TO_DATE 函数可以进行秒、分、时、天、月、年、周等时间差的计算,但是毫秒却不好计算,TO_DATE 函数只能精确到秒,毫秒则只能用 TO_TIMESTAMP 函数,但是这个函数不像 TO_DATE 这样直接减出来的差值就是 NUMBER 类型,如果用 TO_NUMBER 函数转换也会报错。
这里我是用分隔字符串单独计算毫秒部分,如果有更好的办法,请大家分享一下,下面是查询时间差为毫秒的模板(字段1 – 字段2):
SELECT ( ( (TO_TIMESTAMP(字段1, 'YYYY-MM-DD HH24:MI:SS.FF9') + 0) - (TO_TIMESTAMP(字段2, 'YYYY-MM-DD HH24:MI:SS.FF9') + 0) ) * 24 * 60 * 60 + TO_NUMBER ( '0' || ( TO_NUMBER(SUBSTR(字段1, INSTR(字段1, '.'))) - TO_NUMBER(SUBSTR(字段2, INSTR(字段2, '.'))) ) ) ) * 1000 FROM 表名
这里是相差的毫秒数,如果需要显示小数的秒请删除 “( ) * 1000”这部分,下面是个测试代码,直接运行:
SELECT ( ( (TO_TIMESTAMP('2016-04-13 17:13:50.998', 'YYYY-MM-DD HH24:MI:SS.FF9') + 0) - (TO_TIMESTAMP('2016-04-13 17:13:47.235', 'YYYY-MM-DD HH24:MI:SS.FF9') + 0) ) * 24 * 60 * 60 + TO_NUMBER ( '0' || ( TO_NUMBER(SUBSTR('2016-04-13 17:13:50.998', INSTR('2016-04-13 17:13:50.998', '.'))) - TO_NUMBER(SUBSTR('2016-04-13 17:13:47.235', INSTR('2016-04-13 17:13:50.235', '.'))) ) ) ) * 1000 FROM DUAL结果为:3763
您可能感兴趣的文章:
相关内容
- Oracle 12c新特性之如何检测有用的多列统计信息详解_oracle_
- Oracle 11g收集多列统计信息详解_oracle_
- Oracle 11g控制文件全部丢失从零开始重建控制文件_oracle_
- Oracle三种循环(For、While、Loop)实现九九乘法表_oracle_
- oracle 12c安装教程(window)_oracle_
- oracle密码过期的彻底解决方案_oracle_
- win7下oracle 10g安装图文教程_oracle_
- PL/SQL Developer连接64位的Oracle图文教程_oracle_
- Win7 64环境下Oracle10g 64位版本安装教程_oracle_
- Oracle删除表及查看表空间的实例详解_oracle_
