Я хотел бы преобразовать заданную дату и целое число в метку времени в функции 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
Любая помощь приветствуется: )
Попробуйте изменить возвращаемое значение на:
RETURN (mydate::text || ' ' || timestring)::timestamp;
Вас не хватает 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;