Espaço para o Logo da PGopen

  • Quem Somos
  • Clientes
  • Sustentabilidade em T.I.
  • Contato
1

Versão 8.4: primeira release beta disponível!

O grupo de desenvolvimento do PostgreSQL anunciou que a primeira versão 8.4 BETA está disponível para download. A colaboração da comunidade nos testes é de vital importância para o diagnóstico e correção de quaisquer problemas na ferramenta. Esta versão não deve ser utilizada para aplicações corporativas, por ser menos estável que as releases padrão.

http://postgresqlbr.blogspot.com/2009/04/versao-84-primeira-release-beta.html
Cláudio Bezerra Leopoldino
Ano Bissexto no PostgreSQL!
Às vezes o mais difícil de fazer são coisas realmente simples. Os exemplo de código abaixo são implementações de uma rotina que calcula se um ano é bissexto ou não.

Segundo a Wikipedia, as regras do ano bissexto são poucas, mas não são triviais:
* São bissextos todos os anos múltiplos de 400, p.ex: 1600, 2000, 2400, 2800
* Não são bissextos todos os múltiplos de 100 e não de 400, p.ex: 1700, 1800, 1900, 2100, 2200, 2300, 2500…
* São bissextos todos os múltiplos de 4 e não múltiplos de 100, p.ex: 1996, 2004, 2008, 2012, 2016…
* Não são bissextos todos os demais anos.

Com base no que é apresentado neste post, peço que você que me responda três perguntas:
- Os dois exemplos abaixo estão corretos?
- Qual dos dois apresentaria alguma vantagem em relação ao outro? Ou são ambos equivalentes?
- É possível melhorar as implementações? De que formas?

As duas funções criadas retornam 1 se ano for bissexto, 0 se não for e 99 se for anterior a 1582, para anos acima de 1582.

Exemplo 1:
CREATE OR REPLACE FUNCTION ano_bissexto (pAno integer) RETURNS integer AS $$
DECLARE
ret integer;
BEGIN
IF $1<1582 THEN RETURN 99; END IF;
ret :=0; –Inicialização
IF ($1%400=0) THEN
ret:=1; /*Bissexto*/
ELSE
IF ($1%4=0) AND ($1%100<>0) THEN
ret:=1; /*Bissexto*/
END IF;
END IF;
RETURN ret;
END;
$$ LANGUAGE plpgsql;
SELECT ano_bissexto(1600);

Exemplo 2:
CREATE OR REPLACE FUNCTION ano_bissexto_menor (pAno integer) RETURNS integer AS $$
DECLARE
ret integer;
BEGIN
IF $1<1582 THEN RETURN 99; END IF;
ret :=$1; –Inicialização
IF (ret%100=0) THEN
ret:=ret/100;
END IF;
IF ret%4=0 THEN
RETURN 1; –Bissexto
ELSE
RETURN 0;
END IF;
END;
$$ LANGUAGE plpgsql;

SELECT ano_bissexto_menor(1600);

http://postgresqlbr.blogspot.com/2009/04/ano-bissexto-no-postgresql.html
Cláudio Bezerra Leopoldino

    Mais notícias

  • Bancos de dados noSQL
  • Crianças internadas em hospitais no Estado do Pará usam GNU/Linux
  • Sucesso em “Avatar”, Canonical mira o mercado corporativo
  • Linux kernel avaliado em mais de 1 bilhão de euros
  • Mapas grátis nos celulares desafiam GPS
  • MP3 player toca músicas no rítmo da corrida

Formulário de Contato

Entre em contato com a PGOPEN preenchendo corretamente os campos abaixo:

Todos os campos são obrigatórios

  • Software Livre

  • Redução de Custos
  • PostgreSQL
  • CURSOS

  • Linux
  • PHP
  • PostgreSQL
  • XHTML e CSS
  • Veja todos os cursos
  • Planos de Suporte em T.I.

  • Pré-pago
  • Rede Segura: 3 em 1
  • Suporte 10
  • Suporte 20
  • Suporte Agora
  • Soluções em T.I.

  • Administração de Redes
  • Backup
  • Cabeamento Estruturado
  • Consultoria
  • Fábrica de Software
  • Impressão de dados variáveis
  • Outsourcing de Impressão
  • Redes sem Fio
  • Segurança em Redes
  • Suporte Crítico
  • VPN
  • Links

    • FISL.org.br
    • LINUX.org
    • PHP.net
    • POSTGRESQL.org
Newsletter

cadastre-se para receber novidades da PGOpen em seu e-mail

© 2010 - PG OPEN . Todos os direitos reservados.
Avenida José César de Oliveira, 181- Cj. 1.002 - Vila Leopoldina - São Paulo - SP, CEP 05317-000
SAC: (11) 3835-2438 / Comercial: (11) 2864-0082| E-mail: comercial@pgopen.com.br

Ravi Propaganda