使用函数将bigint转换为时间戳

时间:2018-10-08 10:40:47

标签: postgresql function casting

我有2个值:x_data和y_data。 这些值是图形的X和Y。

x_data当前是一个纪元值乘以1000,我的函数应该能够将其除以1000并转换为时间戳以插入相应的表中。

这是我到目前为止所看到的,显然不起作用:

BEGIN
UPDATE test set x_data=ceil(in_x_data/1000)::abstime::timestamp, y_data=in_y_data WHERE x_data=ceil(in_x_data/1000)::abstime::timestamp;
 IF FOUND THEN 
  RETURN;
 END IF;
 BEGIN 
  INSERT INTO test ( x_data, y_data ) VALUES ( ceil(in_x_data/1000)::abstime::timestamp, in_y_data );
 END;
RETURN;
END;

ERROR: ERROR:  cannot cast type double precision to abstime

我尝试ceil(in_x_data::NUMERIC/1000)::abstime::timestampcannot cast type numeric to abstime

这就是我调用该函数的方式:

SELECT test(1538949600000,123);

表测试为:

CREATE TABLE public.test
(
    x_data timestamp without time zone NOT NULL,
    y_data numeric,
    PRIMARY KEY (x_data)
)

有人可以告诉我怎么了吗?

0 个答案:

没有答案