-- -- 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;