【发布时间】:2021-12-19 21:38:03
【问题描述】:
我想计算开始时间(timestamptz 类型的变量)和我的函数完成时的NOW() 时刻之间的差异。
select * from _get_date_diff_ms(NOW(), NOW())
在 PG 13.3 中使用 supabase.io,我收到以下错误消息:
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;
【问题讨论】:
-
ROUND(EXTRACT(EPOCH FROM p_end_time - p_begin_time) *1000)有效吗?请记住:now() 在事务中将始终具有相同的值:它的开始时间。另见EXTRACT, date_part -
你是对的。我在 SAME 函数 (p/lpgsql) 中获取开始和结束时间,我尝试了 clock_timestamp() 和 now(),他们给出了这个 DOUBLE PRECISION 错误
-
计算 PL/PGSQL 函数所用时间(以毫秒为单位)的惯用方法是什么?从 BEGIN (start_time) 到 RETURN (end_time)?我想将此值存储到另一个名为 (search_history) 的表中的列中。谢谢
标签: postgresql plpgsql timing supabase