GARANTIR DESCONTO

Fórum Stored Procedure que retorne Idade e o mês atual.... #58719

23/08/2007

0

Alguém tem uma SP que retorne a Idade eo mês atua...

Exemplo: 33 anos e 9 meses


Grato


Walfrido

Walfrido

Responder

Posts

23/08/2007

Emerson Nascimento

CREATE PROCEDURE IDADE (
    nascimento date,
    data_base date)
returns (
    anos integer,
    meses smallint,
    dias smallint)
as
begin
  if (data_base is null) then
    data_base = current_date;

  anos = extract(year from data_base) - extract(year from nascimento);
  meses = extract(month from data_base) - extract(month from nascimento);
  dias = extract(day from data_base) - extract(day from nascimento);

  -- se quiser considerar o dia, habilite o código abaixo
/*  if (dias < 0) then
  begin
    dias = 30 + dias; -- valor aproximado de dias
    meses = meses - 1;
  end
*/
  if (meses < 0) then
  begin
    meses = meses + 12;
    anos = anos - 1;
  end

  suspend;
end

esta procedure retorna a idade a partir de uma data base. se a data base não for informada, assume o dia atual.

EXECUTE PROCEDURE IDADE(´01.06.1982´, ´01.01.2006´)
retorna que idade uma pessoa nascida em 01/Jan/1982 tinha em 01/Jan/2006

EXECUTE PROCEDURE IDADE(´01.06.1982´, null)
retorna que idade uma pessoa nascida em 01/Jan/1982 tem hoje

pode ser feito com select:
select * from IDADE(´01.06.1982´, ´01.01.2006´)
select * from IDADE(´01.06.1982´, null)

a partir do retorno da procedure você monta a string da forma que quiser. ou pode alterar o retorno de modo que já devolva a string montada.

P.S.: dependendo do uso, creio que seja melhor utilizar uma função


Responder

Gostei + 0

24/08/2007

Walfrido

Você tem razão, é mais viável usar a função, mas agradeço pela resposta, vai ser de grande utilidade.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar