Jer*_*acs 9 postgresql intervals postgresql-9.1
我有一个包含这样的代码的过程:
processStart := current_timestamp;
-- run statement(s)
processEnd := current_timestamp;
elapsed := processEnd - processStart;
raise notice 'My Statement, elapsed time: %', elapsed;
Run Code Online (Sandbox Code Playgroud)
我的想法是,我希望获得运行语句或语句集合所需的时间.
问题是,这会返回00:00:00亚秒的经过时间.我真的很想看到毫秒.我怎样才能做到这一点?
有关使用EXTRACT和的问题和答案EPOCH,但这似乎是在"第二"级别,这对我的目的来说不够精细.
UPDATE
使用@ twn08的答案,我最终得出了以下解决方案:
我声明了以下变量:
declare
processStart timestamp;
elapsed numeric(18,3);
processFinish timestamp;
Run Code Online (Sandbox Code Playgroud)
然后,在开始这个过程之前:
processStart := clock_timestamp();
Run Code Online (Sandbox Code Playgroud)
在完成这个过程后,我运行了这个:
processFinish := clock_timestamp();
elapsed := cast(extract(epoch from (processFinish - processStart)) as numeric(18,3));
raise notice 'My Statement, elapsed time: % ms', elapsed;
Run Code Online (Sandbox Code Playgroud)
这在游泳中起作用.
Tom*_*eif 17
with t as
(select
Now() as tend,
Now() - interval '10 seconds 552 milliseconds' as tstart
)
select
extract('epoch' from tend) - extract('epoch' from tstart)
from
t
Run Code Online (Sandbox Code Playgroud)
注意:
对于9.0+版本,您可以在文档中阅读以下示例:
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');
Result: 982384720.12
Run Code Online (Sandbox Code Playgroud)
在9.0之前有:
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-08');
Result: 982384720
Run Code Online (Sandbox Code Playgroud)
基于此,我的示例在9.0版之前是否有效尚不完全清楚
这是一个单行代码,用于计算从过去的 TIMESTAMP 到 now() 的经过时间(以毫秒为单位):
SELECT ROUND((EXTRACT (EPOCH FROM now()) - EXTRACT (EPOCH FROM pg_last_xact_replay_timestamp())) * 1000) AS "replication_lag (ms)";
Run Code Online (Sandbox Code Playgroud)
上面的示例计算了主 PostgreSQL 服务器和备用 PostgreSQL 服务器之间的复制延迟,因此只需替换pg_last_xact_replay_timestamp()为您的 TIMESTAMP。
要更清楚地了解它在做什么:
SELECT
ROUND ((
EXTRACT (EPOCH FROM now()) -
EXTRACT (EPOCH FROM pg_last_xact_replay_timestamp())
) * 1000)
AS "replication_lag (ms)";
Run Code Online (Sandbox Code Playgroud)
输出:
replication_lag (ms)
----------------------
562
(1 row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18624 次 |
| 最近记录: |