Re: getting last day of month
От | Patrick.FICHE@AQSACOM.COM |
---|---|
Тема | Re: getting last day of month |
Дата | |
Msg-id | 1DC6C8C88D09D51181A40002A5286929B23676@intranet обсуждение исходный текст |
Ответ на | getting last day of month (Sergey Pariev <egy@tnet.dp.ua>) |
Список | pgsql-general |
You could try : SELECT int4(EXTRACT( DAYS FROM CURRENT_DATE + '1 month'::interval - CURRENT_DATE )); ---------------------------------------------------------------------------- --------------- Patrick Fiche email : patrick.fiche@aqsacom.com tel : 01 69 29 36 18 ---------------------------------------------------------------------------- --------------- -----Original Message----- From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Sergey Pariev Sent: jeudi 25 aout 2005 18:44 To: pgsql-general postgresql.org Subject: [GENERAL] getting last day of month Hi all. I need to find out the last day of current month. Currently I do the trick with code below, but that's rather ugly way to do it IMHO. Could anybody suggest me a better way ? The following is my testing procedure : CREATE or REPLACE FUNCTION test_findout_dates() RETURNS integer AS $$ DECLARE begin_date date; end_date date; current_month int; current_year int; last_day int; BEGIN current_month := extract ( month from now() ) ; current_year := extract ( year from now() ) ; begin_date := current_year || '-' || current_month || '-01' ; last_day := 31; begin end_date := (current_year || '-' || current_month || '-'|| last_day) :: date; last_day := 0 ; exception when others then raise notice '31 doesnt cut for month %',current_month ; end; if last_day > 0 then begin last_day := 30; end_date := (current_year || '-' || current_month || '-'|| last_day) :: date; last_day := 0 ; exception when others then raise notice '30 doesnt cut for month %',current_month ; end; end if; if last_day > 0 then begin last_day := 29; end_date := (current_year || '-' || current_month || '-'|| last_day) :: date; last_day := 0 ; exception when others then raise notice '29 doesnt cut for month %',current_month ; end; end if; if last_day > 0 then begin last_day := 28; end_date := (current_year || '-' || current_month || '-'|| last_day ) :: date; last_day := 0 ; exception when others then raise notice '28 doesnt cut for month %',current_month ; end; end if; raise notice 'begin date is % ',begin_date; raise notice 'end date is % ',end_date; return 1; END; $$ LANGUAGE plpgsql ; Thans in Advance, Sergey. ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend
В списке pgsql-general по дате отправления: