Desculpem, mas não resisti! :D

-- http://en.wikipedia.org/wiki/Template:IsLeapYear
create function ano_bissexto(int) returns boolean as $$
  select ((mod($1, 4) = 0) and (mod($1, 100) != 0)) or (mod($1, 400) = 0)
$$ language sql;

select ano_bissexto(1988), ano_bissexto(1998), ano_bissexto(2000),
ano_bissexto(2006);
 bissexto | bissexto | bissexto | bissexto
----------+----------+----------+----------
 t        | f        | t        | f
(1 registro)

create or replace function dias_mes(mes int, ano int) returns int as $$
declare
  ret int;
begin
  ret = (array[31,28,31,30,31,30,31,31,30,31,30,31])[mes];
  if (mes = 2 and ano_bissexto(ano)) then
    ret = ret + 1;
  end if;
  return ret;
end
$$ language plpgsql;

select dias_mes(2, 2000), dias_mes(2, 2001), dias_mes(11, 2002),
dias_mes(12, 2005);
 dias_mes | dias_mes | dias_mes | dias_mes
----------+----------+----------+----------
       29 |       28 |       30 |       31
(1 registro)

-- 
Rodrigo Hjort
http://icewall.org/~hjort


2006/12/5, Rodrigo Hjort <[EMAIL PROTECTED]>:
> Com isso não é necessário fazer nenhuma conversão ou typecast. Se
> tiver um tempinho hoje, escrevo essa função.
>
> 2006/11/27, Osvaldo Rosario Kussama <[EMAIL PROTECTED]>:
> > Marcos Fabrício Corso escreveu:
> > > Alguém sabe de alguma função para calcular a quantidade de dias de
> > > determinado mês ??
> > >
> >
>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a