Я хочу получить миллисекунды из метки времени с часовым поясом, используя функцию plsql.Я могу сгенерировать следующую функцию, но она приводит к усечению миллисекунд.
CREATE or REPLACE FUNCTION getMSFromTime(t1 timestamp with time zone)
RETURNS bigint AS $$
declare time1 double precision ;
BEGIN
SELECT EXTRACT(EPOCH FROM t1) into time1;
return time1;
END;
$$ LANGUAGE plpgsql;
, но она игнорирует миллисекунды
SELECT getMSFromTime('2019-02-11 08:01:33.423+00') //1549872093
SELECT getMSFromTime('2019-02-11 08:01:33.000+00') //1549872093
Я могу получить способ PostgreSQL, чтобыДесятичные дроби в миллисекундах также сохраняются, используя:
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2019-02-11 08:01:33.423+00'); // 1549872093.423
Но я не могу интегрировать его в функцию, и она выдает следующую ошибку:
syntax error at or near "t1"
LINE 5: ...ELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE t1) into t..
CREATE or REPLACE FUNCTION getMSFromTime2(t1 timestamp with time zone)
RETURNS bigint AS $$
declare time1 double precision ;
BEGIN
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE t1) into time1;
return time1;
END;
$$ LANGUAGE plpgsql;
Пожалуйста, предложите способ, чтобысоздать функцию PostgreSQL, которая может выполнять эту функцию.