From bf2d2c3870bfea759498ff6ae97b3dd60f476485 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 7 May 2010 22:44:13 +1200 Subject: [PATCH] Add a function to convert iCalendar interval syntax into SQL. --- dba/rrule_functions-8.1.sql | 5 +++++ dba/rrule_functions.sql | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/dba/rrule_functions-8.1.sql b/dba/rrule_functions-8.1.sql index eb2f309e..ea257b68 100644 --- a/dba/rrule_functions-8.1.sql +++ b/dba/rrule_functions-8.1.sql @@ -702,3 +702,8 @@ BEGIN END; $$ LANGUAGE 'plpgsql' IMMUTABLE; + + +CREATE or REPLACE FUNCTION icalendar_interval_to_SQL( TEXT ) RETURNS interval AS $function$ + SELECT CASE WHEN substring($1,1,1) = '-' THEN -1 ELSE 1 END * regexp_replace( regexp_replace($1, '[PT-]', '', 'g'), '([A-Z])', E'\\1 ', 'g')::interval; +$function$ LANGUAGE 'SQL' IMMUTABLE STRICT; diff --git a/dba/rrule_functions.sql b/dba/rrule_functions.sql index 872fb0d6..8b872a38 100644 --- a/dba/rrule_functions.sql +++ b/dba/rrule_functions.sql @@ -708,3 +708,9 @@ BEGIN END; $$ LANGUAGE 'plpgsql' IMMUTABLE STRICT; + + +CREATE or REPLACE FUNCTION icalendar_interval_to_SQL( TEXT ) RETURNS interval AS $function$ + SELECT CASE WHEN substring($1,1,1) = '-' THEN -1 ELSE 1 END * regexp_replace( regexp_replace($1, '[PT-]', '', 'g'), '([A-Z])', E'\\1 ', 'g')::interval; +$function$ LANGUAGE 'SQL' IMMUTABLE STRICT; +