为什么我的 PL/SQL 持续时间函数不能正常工作?在下面的查询中,我以与下面的函数相同的方式手动计算“hh:mm”。但是,我得到不同的结果。
来电查询:
WITH durdays AS (SELECT SYSDATE - (SYSDATE - (95 / 1440)) AS durdays FROM DUAL)
SELECT TRUNC (24 * durdays) AS durhrs,
MOD (TRUNC (durdays * 1440), 60) AS durmin,
steven.duration (SYSDATE - (95 / 1400), SYSDATE) duration
FROM durdays
输出:
durhrs: 1
durmin: 35
duration: '1:38'
功能代码:
CREATE OR REPLACE FUNCTION steven.duration (d1 IN DATE, d2 IN DATE)
RETURN VARCHAR2 IS
tmpvar VARCHAR2 (30);
durdays NUMBER (20,10); -- Days between two DATEs
durhrs BINARY_INTEGER; -- Completed hours
durmin BINARY_INTEGER; -- Completed minutes
BEGIN
durdays := d2-d1;
durhrs := TRUNC(24 * durdays);
durmin := MOD (TRUNC(durdays * 1440), 60);
tmpvar := durhrs || ':' || durmin;
RETURN tmpvar;
END duration;
/