Напиши функцию, которая обновляет version_actual_period_start с типом timestamp. нужную дату указывает пользователь, а у предыдущей, по времени актуальности записи, обновляется version_actual_period_end-становится такая же , но на 1 секунду меньше. Входные параметры время, наименование таблицы в БД, массив version_meta_id. Plpgsql
CREATE OR REPLACE FUNCTION update_version_actual_period(IN date date, IN table_name text, IN version_meta_id integer[]) RETURNS void AS $$ DECLARE _id integer; _period_start timestamp; BEGIN FOR _id IN SELECT UNNEST(version_meta_id) LOOP SELECT version_actual_period_start INTO _period_start FROM table_name WHERE version_meta_id=_id; UPDATE table_name SET version_actual_period_start=date, version_actual_period_end=_period_start + interval '1 second' WHERE version_meta_id=_id; END LOOP; END; $$ LANGUAGE plpgsql;