[firebase-br] Retornar a idade a partir da data de nascimento

Marco A. marcobolacha em yahoo.com.br
Qui Mar 29 17:08:15 -03 2007


tenho essa funcao em SQL que pode ser adaptada para o seu uso (eu acho)
parece complicado, mas ne nao.
select
case when month(getdate()) < month(datanasc) then // testa se o mes e menor
que o mes de nascimento para calcular qtos anos
          rtrim(cast(((year(getdate()) - year(datanasc))-1 ) as char)) // se
for diminui 1, pois nao completou ainda ex: 02/2000 - 03/2007 = 6 anos e 11
meses
     else rtrim(cast((year(getdate()) - year(datanasc)) as char)) // se nao,
2000-1990 = 10 anos e 0 meses
end + '  anos e ' +  // complementa com escrito anos ex 10 anos e
case when (month(getdate()) - month(datanasc)+12) < 12 then // testa se o
mes atual-mes data nascimento + 12 < 12 ou seja se mes = 3 e mes nasc = 2,
resulta 13 entao, ele n completou o ano e ainda falta um mes nao calcula
aki. aki so se for  mes nascimento>= 4 resulta negativo
          rtrim(cast((12-(month(datanasc) - month(getdate()))) as char))
     else rtrim(cast(((month(getdate()) - month(datanasc))) as char))
end + ' meses'

funcao rtrim tira espacos da conversao (cast) de numeros para (char) string
ex: "10          anos e 3                 meses". com rtrim "10 anos e 3
meses"

espero ter ajudado
"Cleidson Developer"
<cleidson.developer em gmail.com> escreveu na
mensagem news:euh2r4$84s$1 em sea.gmane.org...
Sim, Fernando, isso mesmo...

De seis em seis anos o ano tem 366 dias, nos outros 5 anos tem 365 dias.
Entao a media em 6 anos é 365 + 1/6.

Foi a maneira mais pratica que achei pra calcular os anos. Se conhecer
alguma melhor me ensina, pq eu nao achei, fiz essa ai na unha.

E nos testes que eu fiz foi bastante preciso pra calcular a idade.

Fernando Lopes escreveu:
> Uma dúvida por 365.16 ??
>
> Em 29/03/07, Kleber Caneva <kdcc em terra.com.br>
escreveu:
>> Tentou CAST( ((current_date - pac_datanasc) / 365.16) as INTEGER) ?
>>
>> Se não me engano ele trunca o valor e não arredonda..
>>
>> []´s
>>
>> Kléber Caneva
>>
>>
>> ----- Original Message -----
>> From: "Cleidson Developer"
<cleidson.developer em gmail.com>
>> To: <lista em firebase.com.br>
>> Sent: Thursday, March 29, 2007 2:57 PM
>> Subject: [firebase-br] Retornar a idade a partir da data de nascimento
>>
>>
>> Olá pessoal,
>>
>> Estou eu aqui novamente com mais uma dúvida:
>>
>> Gostaria de usar um select que me retornasse a idade em formato inteiro.
>>
>> Essa é a instrucao que estou usando:
>>
>> SELECT paciente_id, pac_nome,
>> pac_sexo, ((current_date - pac_datanasc) / 365.16) as
>> idade FROM PACIENTES ORDER BY PAC_NOME
>>
>>
>> Ta funcionando normal, só que a idade retornada nao é um numero inteiro.
>> Ela retorna algo como 31,2.
>>
>> As funcoes que tentei usar, arredondam o numero ao inves de apenas
>> ignorar a parte fracionaria. Se arredondasse só pra baixo, tudo bem, mas
>> se o numero for 31,91 será arredondado pra 32 ai vai dar problema.
>>
>>
>>
>> Gostaria de saber como obter no retorno apenas o numero inteiro.
>>
>> Quem puder me ajudar, agradeço. rs
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>> Esta mensagem foi verificada pelo E-mail Protegido Terra.
>> Scan engine: McAfee VirusScan / Atualizado em 28/03/2007 / Versão:
>> 5.1.00/4994
>> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista