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,
下一篇: 算法入门 12.二叉搜索树