Oracle中计算时间差是经常用到的。可以使用“日期1-日期2”并加以运算,来获得你要想的时间差:天、小时、分钟或者秒。
显示格式为00:00可以按一下sql语句:
1.to_char(round((to_date(b.jiaoc,'yyyy-mm-dd
hh24:mi:ss')-to_date(b.cq,'yyyy-mm-dd
hh24:mi:ss')),2)*24,'99.9')
2.substr(cast(to_date(b.jiaoc,'yyyy-mm-dd hh24:mi:ss') as
timestamp)-cast(to_date(t2.dd,'yyyy-mm-dd hh24:mi:ss')as
timestamp),12,5)
例如:
select
TO_DATE('2012-02-20
17:45:04','yyyy-mm-dd
hh24:mi:ss')-TO_DATE('2012-02-19
08:34:04','yyyy-mm-dd
hh24:mi:ss')asDay
fromdual;
结果:1.38263888888889
这里的TO_DATE很有用,它决定你的时间存储格式。
那么如果要获取相应的时间单位,下面:
1、以天为单位
round(to_number(end-date-start_date))
例如:
select
round(to_number(TO_DATE('2012-02-20
17:45:04','yyyy-mm-dd
hh24:mi:ss')-TO_DATE('2012-02-19
08:34:04','yyyy-mm-dd
hh24:mi:ss')))asDay
fromdual;
结果:1
2、以小时为单位
round(to_number(end-date-start_date)*24)
例如:
select
round(to_number(TO_DATE('2012-02-20
17:45:04','yyyy-mm-dd
hh24:mi:ss')-TO_DATE('2012-02-19
08:34:04','yyyy-mm-dd
hh24:mi:ss'))*24)asHour
fromdual;
结果:33
3、以分钟为单位
round(to_number(end-date-start_date)*1440)
例如:
select
round(to_number(TO_DATE('2012-02-20
17:45:04','yyyy-mm-dd
hh24:mi:ss')-TO_DATE('2012-02-19
08:34:04','yyyy-mm-dd
hh24:mi:ss'))*1440)asMinite
fromdual;
结果:1991