Here are the 2 functions I have at the moment. I was wondering if
someone had a better way?

CREATE OR REPLACE FUNCTION month_start (date)
  RETURNS date
  AS '
   DECLARE
    day ALIAS FOR $1;
   BEGIN
    RETURN day - (extract(''day'' FROM day)||'' days'')::interval + 
        ''1 day''::interval;              
   END;
  '
  LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION month_end (date)
  RETURNS date
  AS '
   DECLARE
    day ALIAS FOR $1;
    month int;
    year int;
   BEGIN
    month := extract(''month'' FROM day);
    year  := extract(''year'' FROM day);
    IF month = 12 THEN
     month := 1;
     year  := year +1;
    ELSE
     month := month +1;
    END IF;
    RETURN (''01-''||month||''-''||year)::date - 
        ''1 day''::interval;
    END;
   '
   LANGUAGE 'plpgsql';

-- 
David Stanaway

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html

Reply via email to