Использование функции для приведения bigint к отметке времени - PullRequest
0 голосов
/ 08 октября 2018

У меня есть 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::timestamp, но cannot 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)
)

Может кто-нибудь сказать мне, что не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...