-- -- dow_to_int/1 -- create or replace function dow_to_int( character varying ) returns int4 as $$ declare dow_to_int__weekday alias for $1; v_dow integer; begin -- Brute force (what can I say?). select (case trim(upper(dow_to_int__weekday)) when 'SUNDAY' then 1 when 'SUN' then 1 when 'MONDAY' then 2 when 'MON' then 2 when 'TUESDAY' then 3 when 'TUES' then 3 when 'TUE' then 3 when 'WEDNESDAY' then 4 when 'WED' then 4 when 'WEDS' then 4 when 'THURSDAY' then 5 when 'THURS' then 5 when 'THUR' then 5 when 'THU' then 5 when 'FRIDAY' then 6 when 'FRI' then 6 when 'SATURDAY' then 7 when 'SAT' then 7 else -1 end) into v_dow from dual; if v_dow < 0 then raise exception 'Day of the week unknown'; end if; return v_dow; end;$$ language plpgsql;