Essa é minha proposta para o problema de quantidade de dias: create or replace function dias_nummes(mes integer,ano integer) returns varchar as $$ declare retorno integer; begin retorno := extract(day from cast( ano||'-'||(mes+1)||'-1' as date)-1); return retorno ; end; $$ language 'plpgsql'; exemplos: select dias_nummes(3,2006); =31 select dias_nummes(2,2006); =28 select dias_nummes(2,2008); =29
espero que ajude. Rodrigo Hjort escreveu: > 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) > > -- Ivo Nascimento Iann tech - Desenvolvendo soluções com performance e segurança _______________________________________________ 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
