NUMTODSINTERVAL函数从Oracle 10g更改为Oracle 12c



我们的Oracle数据库最近从10g升级到12c,这导致报告发生了很多变化。以下逻辑用于以16:25:10格式返回数据:

to_char( numtodsinterval(
(select max(date_entered)
from co_hist
where order_no = a.order_no
and   message_text = 'Delivered')
-
(select max(date_entered)
from co_hist
where order_no = a.order_no
and   instr(message_text,'Picklist') != 0
and   instr(message_text,'picked') != 0), 'DAY') ) elapsed_picked_delivered

升级后,从逻辑的同一精确部分返回的数据为:+000000000 16:25:10.000000000

我只需要16:25:10。有没有比使用substr()函数去除前导/尾随0更简单的方法?

我只需要16:25:10。有没有比使用更简单的方法要去掉前导/尾随0的substr((函数?

解决方案之一:

regexp_substr(to_char(numtodsinterval (...your code...,'DAY')),'d{2}:d{2}:d{2}')

不适用。不适用于区间类型

TO_CHAR(<your_query>, 'HH:MI:SS')

最新更新