-- -- timezone__convert_to_utc/2 -- create or replace function timezone__convert_to_utc( p_tz_id integer, p_local_varchar character varying ) returns timestamptz as $$ DECLARE v_base_time timestamptz; BEGIN select "timestamptz" (p_local_varchar || substr(gmt_offset,1,5)) into v_base_time from timezones where tz_id = p_tz_id; if not found then return "timestamptz" (p_local_varchar || '+00'); end if; return "timestamptz" (p_local_varchar) - "interval" (gmt_offset || 'seconds') from timezone_rules where tz_id = p_tz_id and v_base_time between utc_start and utc_end; END; $$ language plpgsql;