我有一个包含如下代码的过程:
processStart := current_timestamp;
-- run statement(s)
processEnd := current_timestamp;
elapsed := processEnd - processStart;
raise notice 'My Statement, elapsed time: %', elapsed;
这个想法是,我想获得运行语句或语句集合所需的时间。
问题是,这会返回00:00:00
亚秒级的经过时间。我真的很想看到毫秒。我怎样才能做到这一点?
有关于使用EXTRACT
and的问题和答案EPOCH
,但这似乎处于“第二”级别,这对于我的目的来说不够精细。
更新
使用@twn08 的回答,我最终得出了以下解决方案:
我声明了以下变量:
declare
processStart timestamp;
elapsed numeric(18,3);
processFinish timestamp;
然后,在开始该过程之前:
processStart := clock_timestamp();
该过程完成后,我运行了这个:
processFinish := clock_timestamp();
elapsed := cast(extract(epoch from (processFinish - processStart)) as numeric(18,3));
raise notice 'My Statement, elapsed time: % ms', elapsed;
这很顺利。