Oracle中求时间差的SQL

本文详细介绍了如何计算两个日期数据之间的差值,并通过示例展示了如何在SQL查询中应用这一计算,包括时间差的天数、小时数、分钟数、秒数和毫秒数。同时,提供了在不同场景下正确使用的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有两个日期数据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,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值