sql - to_char的格式间隔

标签 sql oracle intervals

跟随SQL命令

select TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))) from table1

产生以下格式的结果:+000000000 00:03:01.954000。

是否可以在to_char函数中输入特殊格式以获取
格式的结果:+00 00:00:00.000?

最佳答案

我意识到这一点都不聪明,也不是您要查找的特殊格式的字符串,但是鉴于输出是固定长度的,因此此答案确实有效:

SELECT    SUBSTR(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))), 1, 1)
       || SUBSTR(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))), 9, 2)
       || ' '
       || SUBSTR(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00'))), 12, 12)
  FROM table1;

它也只是舍入小数秒而不是四舍五入,但是我从您的示例中假设它们无论如何都只是零。

这是一个更大的尴尬,但我无法抗拒:
SELECT SUBSTR(REPLACE(TO_CHAR(NVL(arg1 - arg2, TO_DSINTERVAL('0 00:00:00')))
                     , '0000000', '')
             , 1, 16)
  FROM table1;

关于sql - to_char的格式间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970249/

相关文章:

mysql - 如何在连接查询中返回基于一列的最大行?

sql - 比多个 SELECT 语句更好的方法?

oracle - 为什么我在PL/SQL中执行CASE语句时得到ORA-06592:找不到CASE?

sql - Last_value 分区依据

database - Oracle 索引何时以及为何失效?

Javascript - 在间隔运行的函数内调用时无法使用对象方法?

php - 特定行上的自举表 ionic

mysql - 使用sql查询将带有操作的字符串转换为int

javascript - 如何让元素触发一个接一个地出现,间隔很小?

java - 算法 - 查找循环世界中重叠间隔的持续时间(24 小时)