您正在尝试找出执行API调用所花费的时间:这是代码
DECLARE
l_time timestamp;
l_lapsetime VARCHAR2(100);
BEGIN
select systimestamp into l_time from dual;
--here goes my API call
select to_char((systimestamp-l_time),'HH24:MI:SS') into l_lapsetime from dual;
DBMS_OUTPUT.PUT_LINE('Time taken ' || l_lapsetime);
END;
我期待结果以毫秒为单位,但我得到输出为:
Time taken +000000000 10:30:00.016938000
这次不是太多了吗?
答案 0 :(得分:3)
当您减去两个时间戳时,结果类型为INTERVAL。
TO_CHAR没有在间隔上定义,这里发生的是Oracle执行从INTERVAL到VARCHAR2的标准隐式转换,忽略了你的第二个参数。
如果您想将INTERVAL转换为字符,请使用EXTRACT:
SELECT extract(hour FROM v_interval) || ':'
|| extract(minute FROM v_interval) || ':'
|| extract(SECOND FROM v_interval)
FROM (SELECT ×tamp2 - ×tamp1 v_interval FROM dual)