У меня есть 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)
)
Может кто-нибудь сказать мне, что не так?