【发布时间】:2021-12-26 22:44:19
【问题描述】:
我创建了oracle NVL function,它将减去开始和结束时间列并给出结果
但是我没有得到正确的输出值
例子
Start time- 2:33:10
End time -2:33:20
Actual Output - 9 seconds
Expected Output- 10 seconds
查询
NVL(TO_CHAR( table.time1,'YYYY/MM/DD HH24:MI:SS'),' ')"Time1",
NVL(TO_CHAR( table.time2,'YYYY/MM/DD HH24:MI:SS'),' ')"Time2",
NVL(dbms_lob.substr(oprm.message,4000),' ') AS "Messages",
NVL(REGEXP_SUBSTR (CAST( table.time2 AS TIMESTAMP) - CAST( table.time1 AS TIMESTAMP), '\d{2}:\d{2}:\d{2}'),' ') AS duration
【问题讨论】:
-
opa.start_time/end_time的数据类型是什么?如果它是 DATE,那么将两者相减就不可能产生几分之一秒的差异。
-
对于 oracle 表列没有称为 datetime 的数据类型。有日期和时间戳
-
那么不可能减去两个 DATE 类型并有一个小数秒。请提供更多详细信息。
-
我运行了这个查询,它返回 11 - 选择 REGEXP_SUBSTR (CAST(to_date('05/24/2021 09:13:18','MM/DD/YYYY HH24:MI:SS') AS TIMESTAMP) - CAST(to_date('05/24/2021 09:13:07','MM/DD/YYYY HH24:MI:SS') AS TIMESTAMP), '\d{2}:\d{2} :\d{2}') 来自双重的 AS 持续时间。所以问题必须出在你的 UI 或其他东西上。请编辑问题并显示 opa 表的 DLL。