【发布时间】:2021-06-16 13:48:38
【问题描述】:
我们的 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 更简单的方法?
【问题讨论】:
-
您也可以提及时间格式。喜欢
TO_CHAR(<your_query>, 'HH:MI:SS'); -
@AnkitBajpai - 这对间隔不起作用 - 它只是被忽略了,不是吗?
-
我不记得它在 10g 中看起来有什么不同,但无论如何,有一些想法 here 关于如何获得你想要的格式,作为一个字符串。你也可以
cast(numtodsinterval(...) as interval day(0) to second(0)但这仍然给你一个数字的天数——这当然很有用;如果没有,你可以取消它。