--
-- timezone__get_rawoffset/2
--
create or replace function timezone__get_rawoffset(
p_tz_id integer,
p_time timestamp with time zone
) returns interval as $$
DECLARE
v_offset varchar;
BEGIN
v_offset := '0';
select
case isdst_p
when 't' then "interval" (gmt_offset || 'seconds') - '3600 seconds'
else "interval" (gmt_offset || 'seconds')
end
into v_offset
from timezone_rules
where tz_id = p_tz_id and p_time between utc_start and utc_end;
return v_offset;
END;
$$ language plpgsql;