如题,想得到的结果是两个时间相差几天几小时几分几秒,如何用纯SQL实现??

解决方案 »

  1.   

    select sysdate,
           trunc((sysdate - trunc(sysdate))*24),
           trunc(mod((sysdate - trunc(sysdate))*24*60,60)), 
           trunc(mod((sysdate - trunc(sysdate))*24*60*60,60)) from dual
      

  2.   


    如何连一块显示,然后是O的话就不显示,比如就1个小时30秒显示‘1hr30s’,一小时10分20秒显示‘1hr10m20s’?
      

  3.   

    借1楼SQL 。。拼接一下值不就OK了。。  select   trunc((sysdate - trunc(sysdate))*24) || 'hr'
           trunc(mod((sysdate - trunc(sysdate))*24*60,60)) || 'm'
           trunc(mod((sysdate - trunc(sysdate))*24*60*60,60)) || 's'  as t_date from dual 
      

  4.   


    see   :    NUMTODSINTERVAL 函数
      

  5.   

    加decode判断为0的情况。。 select  decode( trunc((sysdate - trunc(sysdate))*24), 0 , null, trunc((sysdate - trunc(sysdate))*24)  ) || 'hr' ||  
        decode (trunc(mod((sysdate - trunc(sysdate))*24*60,60)) , 0 ,null , trunc(mod((sysdate - trunc(sysdate))*24*60,60))) || 'm'   ||  
     decode ( trunc(mod((sysdate - trunc(sysdate))*24*60*60,60)), 0 , null , trunc(mod((sysdate - trunc(sysdate))*24*60*60,60)) ) || 's'  as t_date from dual