Oracle timeStamp时间类型相减,单位为毫秒

关于时间日期的相减的知识有很多,但是大部分是以秒为单位的,由于项目指标的要求,统计平均交易时间(毫秒级别),自己总结如下:

1.计算时间首先将时间类型转为为字符类型;

2.然后将时间类型转换为对应的时间类型相减;

3.接着截取毫秒范围内的字符串;

4.将结果转换为数字类型进行相应的统计计算。


例如:

计算某统计区间内最大的交易时间?

--统计时间区域内的最大交易时间
select max(
to_number(
substr(
(
to_timestamp(to_char(结束字段,'yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6') -
to_timestamp(to_char(开始字段,'yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6')
)
*86400000,2,9)
)
) from 表 a 
where a.开始字段 > 左区间
and a.结束字段 < 右区间

注意:

1.格式化'yyyy-mm-dd hh24:mi:ss.ff6'是直接格式化到毫秒级别,默认为6位;

2.86400000代表“时”转换为“毫秒”的转换量;

3.substr(a,2,9)是将正确截取对应的毫秒差,因为一般to_timestamp相减之后的格式为:+000000001  00:00:00:000000000,这时我们需要的是“+”后面,第一个“空格”前面的。

 

小提示:

to_date只能处理秒及以上的时间,不能处理毫秒级别的。

 

 

你可能感兴趣的:(Oracle)