原址如下:
https://blog.csdn.net/u010564366/article/details/52985426
今天的工作中遇到一个问题,需要计算数据库中两个时间字段的差值,字段类型是timestamp,将字段直接相减,会得到timestamp类型的结果值,不是我想要的number类型的值。在网上找了一些方法,只能得到4舍5入的结果,这样造成毫秒数不准确
后来再一篇博客中得到启发:
select (to_date(substr(t.end_time, 1, 19), 'yyyy-mm-dd hh24:mi:ss') -
to_date(substr(t.start_time, 1, 19), 'yyyy-mm-dd hh24:mi:ss')) * 24 * 3600 * 1000 +
to_number(substr(t.end_time, 21, 3)) -
to_number(substr(t.start_time, 21, 3))
from rpt.bs_srv_log_1028 t;
1
2
3
4
5
这是一种思路,将毫秒和之前的日期分开计算,也是一种方法,但是执行计划效率不够高
后来找到了两个函数解决了这个问题:
EXTRACT(SECOND FROM(t.end_time - t.start_time)) * 1000
1
这样就完美的得到了我想要的毫秒数值啦~
---------------------
作者:LoveSouthCity
来源:CSDN
原文:https://blog.csdn.net/u010564366/article/details/52985426
版权声明:本文为博主原创文章,转载请附上博文链接!