как преобразовать int во время в функции pl / pgsql - PullRequest
1 голос
/ 30 августа 2010

Я хотел бы преобразовать данную дату и целое число в метку времени в функции pl / pgsql.я никогда ничего не делал с pl / pgsql прежде, так что я немного растерялся.

Благодаря ответу Пабло Санта-Круса, он зашел так далеко:

CREATE OR REPLACE FUNCTION to_my_timestamp(mydate date, timeint integer) RETURNS timestamp AS $$
DECLARE
    myhours   integer := timeint / 10000;
    myminutes integer := timeint % 10000 / 100;
    myseconds integer := timeint % 100;
    timestring  text    := myhours || ':' || myminutes || ':' || myseconds;
BEGIN
    RETURN (mydate::text || ' ' || timestring)::timestamp;
$$ LANGUAGE plpgsql;

select to_my_timestamp('2010-08-12',123456);

Тем не менее, это пока не работает для меня.Это ошибка, которую я получаю, используя pgadmin3 в Ubuntu:

ERROR:  syntax error at end of input
LINE 9: $$ LANGUAGE plpgsql;
        ^

********** Error **********

ERROR: syntax error at end of input
SQL state: 42601
Character: 377

Любая помощь очень ценится:)

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

Тебе не хватает END;:

CREATE OR REPLACE FUNCTION to_my_timestamp(mydate date, timeint integer) RETURNS timestamp AS $$
DECLARE
    myhours   integer := timeint / 10000;
    myminutes integer := timeint % 10000 / 100;
    myseconds integer := timeint % 100;
    timestring  text    := myhours || ':' || myminutes || ':' || myseconds;
BEGIN
    RETURN (mydate::text || ' ' || timestring)::timestamp;
END;
$$ LANGUAGE plpgsql;
1 голос
/ 30 августа 2010

Попробуйте изменить возвращаемое значение на:

RETURN (mydate::text || ' ' || timestring)::timestamp;
...