我要计算2个日期的间隔天数,
举例:
   入库时间:‘2012-09-09 16:57:50 ’
   出库时间:‘2012-09-10 05:24:30 ’通过语句想计算出:出库时间-入库时间=2天
另外说明一些入库时间和出库时间是文本的,需转换成日期型后再计算

解决方案 »

  1.   

    两个date 型可以直接相减,值的单位是天,如果不是date型 先用to_date()处理再相减。
     得出年数 : round(减后的值/365) 
     得出剩余月数: round(mod(减后的值,365)/30)
      

  2.   

    这样写可以执行,但不知道有没有更简单的函数
    select to_date(substr('2012-09-10 05:24:30',1,10), 'yyyy-mm-dd hh24:mi:ss') -
           to_date(substr('2012-09-09 16:57:50',1,10), 'yyyy-mm-dd hh24:mi:ss')+1
      from dual;
      

  3.   

    select  to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')-to_date('2012-09-09','yyyy-mm-dd') from dual
      

  4.   


    这已经是很简单的写法了,或者稍微改进些,利用trunc函数
    select trunc(to_date('2012-09-10 05:24:30', 'yyyy-mm-dd hh24:mi:ss'))
           -trunc(to_date('2012-09-09 16:57:50', 'yyyy-mm-dd hh24:mi:ss'))+1
    from dual;
      

  5.   

       select trunc(to_date('2012-09-10 05:24:30', 'yyyy-mm-dd hh24:mi:ss')) -
        trunc(to_date('2012-09-09 16:57:50', 'yyyy-mm-dd hh24:mi:ss')) + 1 
        from dual  
      

  6.   

    select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')-to_date('2012-09-09','yyyy-mm-dd') from dual
      

  7.   

    select trunc(to_date('2012-09-10 05:24:30', 'yyyy-mm-dd hh24:mi:ss'))
           -trunc(to_date('2012-09-09 16:57:50', 'yyyy-mm-dd hh24:mi:ss'))+1
    from dual;
    日期直接相减就ok了
      

  8.   

    select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')-to_date('2012-09-09','yyyy-mm-dd') from dual