postgresql - 如何在函数中测量以毫秒为单位的时间差?
问题描述
我想计算开始时间(类型变量timestamptz
)和NOW()
我的函数完成时间之间的差异。
select * from _get_date_diff_ms(NOW(), NOW())
将 supbase.io 与 PG 13.3 一起使用,我收到以下错误消息:
operator does not exist: timestamp with time zone - double precision"
CREATE OR REPLACE FUNCTION _get_date_diff_ms(p_begin_time timestamptz, p_end_time timestamptz)
RETURNS int AS
$$
BEGIN
RETURN ROUND ((
EXTRACT (EPOCH FROM p_begin_time -
EXTRACT (EPOCH FROM p_end_time)
) * 1000));
END;
$$ LANGUAGE plpgsql;
解决方案
我认为您正在寻找的是:
CREATE OR REPLACE FUNCTION public._get_date_diff_ms(p_begin_time timestamp with time zone)
RETURNS integer
LANGUAGE plpgsql
AS $function$
BEGIN
RETURN round((EXTRACT(EPOCH FROM clock_timestamp() - p_begin_time ) * 1000));
END;
$function$
;
select _get_date_diff_ms(now() - interval '.5 sec');
_get_date_diff_ms
-------------------
500
我在函数调用中抛出了一个负间隔以实际获得差异。有关各种时间功能的作用,请参见当前时间。
推荐阅读
- .htaccess - CodeIgniter4 - 模块在 localhost 上工作正常,但在生产环境下不工作
- sql - 多条记录具有相同日期时在 SQL 中筛选最大日期
- flutter - 如果单击另一个按钮,如何禁用一个按钮?
- c# - 为什么继承链中有两个类,而中间的类为空时调用接口的默认实现
- amazon-web-services - 让开发人员可以自由地将特定 SHA 提交到来自 Github.com 或其他存储库的 AWS CodePipeline 构建
- python - 对 Matlab 文件中的数据使用 SVM
- php - 如何使用唯一验证列名
- typescript - 如何使用打字稿格式的无服务器文件访问环境变量?
- centos - 在 jupyterHub 上为 jupyterLab 获取 404
- python - 如何使用 python 获取 control-m 作业状态