DBMS_UTILITY.get_cpu_time
以1/100秒(hsecs)返回時間。
首先,我們可以得到完整的秒數如下:
v_secs := floor(v_exec_time/100);
中hsecs其餘然後
v_exec_time - (v_secs*100);
你想毫秒這樣:
v_remainder_ms := (v_exec_time - (v_secs*100)) * 10;
現在對於HH:MI:SS部分,我們可以使用Oracle日期函數。首先v_secs的值轉換爲天:
v_days := v_secs/60/60/24;
現在用它來得到一個HH:MI:SS值:
TO_CHAR(TRUNC(SYSDATE)+v_days,'HH24:MI:SS')
(注:需要使用HH24否則會得到類似的值'12 :00:00:001' )
並全面HH24:MI:SS:你想MS值:
TO_CHAR(TRUNC(SYSDATE)+v_days,'HH24:MI:SS')||':'||TO_CHAR(v_remainder_ms,'FM000')
所以把他們放在一起:
Declare
v_start_time number;
v_end_time number;
v_exec_time varchar2(100);
v_secs integer;
v_remainder_ms integer;
v_days number;
begin
v_start_time:=DBMS_UTILITY.get_time;
dbms_output.put_line('Time calculation');
v_end_time:=DBMS_UTILITY.get_time;
v_exec_time:= (v_end_time-v_start_time);
v_secs := floor(v_exec_time/100);
v_remainder_ms := (v_exec_time - (v_secs*100)) * 10;
v_days := v_secs/60/60/24;
dbms_output.put_line ('Result='||TO_CHAR(TRUNC(SYSDATE)+v_days,'HH24:MI:SS')
||':'||TO_CHAR(v_remainder_ms,'FM000'));
end;
你到目前爲止試過了什麼?您只需將百分之一秒轉換爲您知道的時間間隔。 –
假設我在v_exec_time變量中獲得150值。我想知道像HH:MI:SS的時間格式的價值:MS 請幫助我。 –
是的,我明白了這個問題 - 因爲它很簡單,我想知道你遇到了哪個問題。 –