在oracle sql中减去时间

杰·汗

我试图根据案例条件相互减去时间,但错误是在预期数字字符的地方找到了非数字字符

这是代码

select 
       case 
       when to_date('01-JAN-2019 05:00 AM', 'HH:MI:SS AM') < 
            to_date('01-JAN-2019 05:00 PM', 'HH:MI:SS AM') 
       then round((to_date('01-JAN-2019 05:00 AM', 'HH:MI:SS AM') - 
                   to_date('01-JAN-2019 09:00 AM', 'HH:MI:SS AM'))*24,2)
       else 0  
       end late
  from dual
巴巴罗斯·欧占

一种选择是使用 ISO 8601 标准时间戳格式作为

select case 
       when timestamp'2019-01-01 05:00:00' < timestamp'2019-01-01 17:00:00'
       then 
            timestamp'2019-01-01 05:00:00' - timestamp'2019-01-01 09:00:00'
       else interval '0' second
       end as late
  from dual

如果您只需要小时的数值,请考虑:

select case 
       when timestamp'2019-01-01 05:00:00' < timestamp'2019-01-01 17:00:00'
       then 
          extract( hour from timestamp'2019-01-01 05:00:00' 
                           - timestamp'2019-01-01 09:00:00' )
       else 0
       end as late
  from dual

Demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章