欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle中求时间差的SQL 博客分类: 数据库方面Oracle Oracle时间差ORA-01861 

程序员文章站 2024-03-16 15:34:40
...

有两个日期数据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,