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