oracle时差,oracle的时差

根本没有理由在表中包含total_time_taken列,您可以随时计算它的值.但是如果你坚持保留它,那么最好将它重新创建为间隔日到第二种数据类型的列,而不是varchar2(假设它是当前的数据类型).所以这里有两个查询供您选择,一个返回间隔天的值到第二个数据类型,另一个值为varchar2数据类型:

此查询返回两个日期之间的差异,作为间隔天到第二个数据类型的值:

SQL> with t1(starttime, endtime, total_time_taken ) as(

2 select to_date('02-12-2013 01:24:00', 'dd/mm/yyyy hh24:mi:ss')

3 , to_date('02-12-2013 04:17:00', 'dd/mm/yyyy hh24:mi:ss')

4 , '02:53:00'

5 from dual

6 )

7 select starttime

8 , endtime

9 , (endtime - starttime) day(0) to second(0) as total_time_taken

10 from t1

11 ;

结果:

STARTTIME ENDTIME TOTAL_TIME_TAKEN

----------- ----------- ----------------

02-12-2013 01:24:00 02-12-2013 04:17:00 +0 02:53:00

此查询返回两个日期之间的差异,作为varchar2数据类型的值:

SQL> with t1(starttime, endtime, total_time_taken ) as(

2 select to_date('02-12-2013 01:24:00', 'dd/mm/yyyy hh24:mi:ss')

3 , to_date('02-12-2013 04:17:00', 'dd/mm/yyyy hh24:mi:ss')

4 , '02:53:00'

5 from dual

6 )

7 select starttime

8 , endtime

9 , to_char(extract(hour from res), 'fm00') || ':' ||

10 to_char(extract(minute from res), 'fm00') || ':' ||

11 to_char(extract(second from res), 'fm00') as total_time_taken

12 from(select starttime

13 , endtime

14 , total_time_taken

15 , (endtime - starttime) day(0) to second(0) as res

16 from t1

17 )

18 ;

结果:

STARTTIME ENDTIME TOTAL_TIME_TAKEN

----------- ----------- ----------------

02-12-2013 01:24:00 02-12-2013 04:17:00 02:53:00

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值