我们的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')