【发布时间】:2021-09-25 01:02:21
【问题描述】:
在下面的 SQL 中,我想以 HH:MM:SS 格式打印一个间隔(实际上是几秒)。我将秒数转换为间隔,然后尝试使用 TO_CHAR 日期格式。 Oracle 服务器忽略了我的模式并打印了一个完整的时间戳,日期和微秒中的字符为零。我做错了什么?
CASE WHEN (TR.RUN_LENGTH > 0) THEN TO_CHAR(NUMTODSINTERVAL(TR.RUN_LENGTH,'second'), 'HH24:MI:SS')
ELSE '0' END AS RUN_LENGTH,
我得到:+000000000 00:03:22.000000000
【问题讨论】:
-
你必须使用
SUBSTR或REGEXP_SUBSTRING -
超过 24 小时的间隔你想得到什么?
-
我正要建议首先转换为
interval day(2) to second(0),然后使用substr()来获取第5个字符 - 但是我看到现在在 21c 中失败了 ORA-25137: Data value out范围. -
这是以前开发人员的方法,对他们很有效。我只是将它暴露在更大范围的时间间隔中(我有一个工作运行了好几天),但它失败了,导致我进行了这个练习。