请教个问题:oracle中如何取两个字符串的时间差或者两个时间点的差距? 例子:2010/05/01 00:07:00 与 2010/05/01 02:44:17  如何取小时差? (也是字符类型)或者:00:07:00  与 07:56:25  两个字符中是几个小时之差?非常紧急,谢谢大家了.

解决方案 »

  1.   

    用to_date转换成date格式,再想减
      

  2.   

    select floor(to_date(2010-05-01 02:44:17','yyyy-mm-dd hh24:mi:ss')-to_date('2011-05-01 00:07:00 ','yyyy-mm-dd hh24:mi:ss')) from dual;
     
      

  3.   

    呵呵,第一个to_date里面漏掉了一个引号。
    select floor(to_date('2010-05-01 02:44:17','yyyy-mm-dd hh24:mi:ss')-to_date('2011-05-01 00:07:00 ','yyyy-mm-dd hh24:mi:ss'))*24 from dual;
    想要小时差再乘以24就可以了
      

  4.   

    哦,我知道了,把floor去掉再*24就可以直接得到小时了.如:select  (to_date('2010-05-01 02:44:17','yyyy-mm-dd hh24:mi:ss')-to_date('2010-05-01 00:07:00 ','yyyy-mm-dd hh24:mi:ss'))*24 from dual  ,太感谢大家了.
      

  5.   

    select (to_date('02:44:17','hh24:mi:ss')-to_date('00:07:00 ','hh24:mi:ss'))*24 from dual 
      

  6.   

    Select Round(To_Number(To_Date('0900', 'HH24MI') -To_Date('0830', 'HH24MI')) * 24, 1 ) From Dual;
      

  7.   

    关键是字符型转为日期型 再进行操作,可以 网上 查一下orcle 日期 时间 函数
     
      

  8.   


    SQL> edi
    已写入 file afiedt.buf  1  select (to_date('2010/05/01 02:44:17','yyyy/mm/dd hh24:mi:ss')-
      2* to_date('2010/05/01 00:07:00','yyyy/mm/dd hh24:mi:ss'))*1440 from dual
    SQL> /(TO_DATE('2010/05/0102:44:17','YYYY/MM/DDHH24:MI:SS')-TO_DATE('2010/05/0100:07:0
    --------------------------------------------------------------------------------
                                                                          157.283333SQL> edi
    已写入 file afiedt.buf  1  select round((to_date('2010/05/01 02:44:17','yyyy/mm/dd hh24:mi:ss')-
      2* to_date('2010/05/01 00:07:00','yyyy/mm/dd hh24:mi:ss'))*24,2) from dual
    SQL> /ROUND((TO_DATE('2010/05/0102:44:17','YYYY/MM/DDHH24:MI:SS')-TO_DATE('2010/05/010
    --------------------------------------------------------------------------------
                                                                                2.62