--
-- Upgrade script to add timezone__convert_to_local
--
-- @author Lars Pind (lars@collaboraid.biz)
-- @creation-date 2003-08-06
--
-- added
select define_function_args('timezone__convert_to_local','tz_id,utc_varchar');
--
-- procedure timezone__convert_to_local/2
--
CREATE OR REPLACE FUNCTION timezone__convert_to_local(
p_tz_id integer,
p_utc_varchar varchar
) RETURNS timestamptz AS $$
DECLARE
v_base_time timestamptz;
BEGIN
select "timestamptz" (p_utc_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_utc_varchar || '+00');
end if;
return "timestamptz" (p_utc_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;