Oracle中求时间差的SQL

有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):

  天:
  ROUND(TO_NUMBER(END_DATE - START_DATE))
  小时:
  ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
  分钟:  www.2cto.com  
  ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
  秒:
  ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
  毫秒:
  ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 60)
 
使用举例:
    1. 求某个时间与当前时间的时间差(天数)
        select ROUND(TO_NUMBER(sysdate - to_date('2013-3-29','YYYY-MM-DD HH:MI:SS'))) from  dual;
      注意:
        如果是一个日期类型(DATE)的字段,如s.pack_date
        你写成:
         select ROUND(TO_NUMBER(sysdate - to_date(s.pack_date,'YYYY-MM-DD HH:MI:SS'))) from  dual;
         一定会报一个: ORA-01861:文字与格式字符串不匹配 的错误;
         办法:指定日期格式,即:
      (select ROUND(TO_NUMBER(sysdate - to_date(to_char(s.pack_date,'YYYY-MM-DD HH:MI:SS'),'YYYY-MM-DD HH:MI:SS'))) from  dual) days,

猜你喜欢

转载自java-worker-cr.iteye.com/blog/1840528