oracle计算两个日期的时间差时分秒

Oracle函数可以实现诸多的功能,下面就介绍使用Oracle函数计算时间差的实现方法。

两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒):

天: ROUND(TO_NUMBER(END_DATE - START_DATE))

小时: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)

分钟: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)

秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)

毫秒: ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 1000)

例子: select ROUND(TO_NUMBER(to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss') - to_date('2012-05-11 10:37:40','yyyy-MM-dd hh24:mi:ss'))*24*60*60) from dual .


select ROUND(TO_NUMBER(to_date(to_char(sysdate,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss')
- to_date('2013-01-16 00:00:00','yyyy-MM-dd hh24:mi:ss'))*24*60*60) from dual

 

to_date如何取得毫秒?

由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒。 如果要取到毫秒,oracle 9i以上版本,可以使用timestamp类型,是date的扩展类型,能支持到毫秒,毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s。而与to_date()对应的转换函数可以使用to_timestamp()。 select to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff') as mydate from dual; 如果想将timestamp又转换成date类型,可以使用cast()函数,但得到的date类型没有了毫秒值。如下: select cast(to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff') as date) as mydate from dual;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值