sql - Oracle SQL To_Char(interval) 没有使用我的格式字符串?
问题描述
在下面的 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
解决方案
正如您所观察到的,to_char()
它不适用于间隔。所以,不要考虑间隔。相反,您有几秒钟的时间,并且想要转换为 HH:MM:SS 格式的字符串。
使用算术和字符串运算:
select lpad(floor(tr.run_length / 3600), 2, '0') || ':' || lpad(mod(floor(tr.run_length / 60), 60), 2, '0') || ':' || lpad(mod(tr.run_length, 60), 2, '0') as hhmmss
from (select 1 as run_length from dual union all
select 10 as run_length from dual union all
select 100 as run_length from dual union all
select 1000 as run_length from dual union all
select 10000 as run_length from dual union all
select 100000 as run_length from dual
) tr;
这是一个 db<>fiddle。
推荐阅读
- mysql - NodeJS Mysql 模块在远程数据库上抛出 ETIMEDOUT 错误
- gradle - 如何在没有根目录的情况下创建“tar.gz”包?
- c++ - 如何将 notifier() 与 compose() 一起使用?
- matlab - matlab如何在另一个矩阵中插入一个矩阵
- swift - 将 ARReferenceImage 从阵列上传到 Firebase 存储
- php - PHP:如何通过循环推送键/值对?
- javascript - 在图像滑块之前的触摸手势
- python - rasa_core.exceptions.UnsupportedDialogueModelError:模型版本:0.0.0 实例版本:0.12.3 最低兼容版本:0.12.0
- javascript - Vue表单未提交
- protractor - 量角器:上传图像在 chrome 无头模式下不起作用