Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maria Emília

Calcular idade no Mysql

Recommended Posts

Gente é o seguinte, para calcular a idade de cada pessoa eu fiz:
Tabela: Paciente
____________________
lNOME........DT_NASC....l
l---------------------------------l
lCarla........1974/10/10.....l
lFelipe.......1993/09/15.....l
lJulia..........1973/09/23....l
l---------------------------------l

SELECT `Nome`, DATE_FORMAT( NOW( ) , '%Y' ) -
DATE_FORMAT( dt_nasc, '%Y' ) -
( DATE_FORMAT( NOW( ) , '00-%m-%d' ) <
DATE_FORMAT( dt_nasc, '00-%m-%d' ) ) AS Idade
FROM `Paciente`

Ai me retornou:

________________
lNOME.......Idade....l
l------------.-------------l
lCarla..............39....l
lFelipe.............19....l
lJulia................40...l
l------------.-------------l

Agora tenho que calcular as pessoas com idade inferior a 22. A próxima é superior a 40 anos.
Então eu fiz,

SELECT `Nome`, DATE_FORMAT( NOW( ) , '%Y' ) -
DATE_FORMAT( dt_nasc, '%Y' ) -
( DATE_FORMAT( NOW( ) , '00-%m-%d' ) <
DATE_FORMAT( dt_nasc, '00-%m-%d' ) ) AS Idade
FROM `Paciente`
WHERE `dt_paciente`>1992

Então me retornou um conjunto vazio ou todos sairam com as idades 0. Não me lembro. Eu estou no trabalho agora, não tenho como acessar o phpmyadim que é o que eu uso no meu pc. Então estou fazendo de cabeça.

Qual o codigo que eu uso para descobrir quem tem mais de 40 anos e menos de 20 anos.
Não sei, acho que errei na condição.

 

 

Ogridada desde já :kiss:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a linguagem Server Side que você esta usando?

 

Se for em ASP CLASSIC pode ser dessa forma.

<%
'Função que vai calcular a idade
function idade(datanascimento)
ano_atual=year(date())'Extrai ano do atual
mes_atual=month(date())'Extrai mes atual
ano_niver=year(datanascimento)'Extrai ano do nascimento
mes_niver=month(datanascimento)'Extrai mês do nascimento
dif_ano=cint(ano_atual)-cint(ano_niver)'Faz a diferença dos anos
dif_mes=cint(mes_atual)-cint(mes_niver)'Faz a diferença dos meses
'Verifica se a diferença dos meses é negativa, 
'se for e pq ainda não fez aniversário
if (dif_mes<0) then
        idade=cint(dif_ano)-1
else
        idade=dif_ano
end if
end function
%>


<%
if idade(cdate("1987-03-30"))>=18 then
response.Write("Data Aceita")
elseif idade(cdate("1987-03-30"))<18 then
response.Write("Data Não aceita")
end if
%>

Agora se for em outra linguagem alguem deve posta outras coisas ai pra você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria melhor vc fazer isso?



22 anos:

SELECT `Nome`, DATE_FORMAT( NOW( ) , '%Y' ) - DATE_FORMAT( dt_nasc, '%Y' ) - ( DATE_FORMAT( NOW( ) , '00-%m-%d' ) < DATE_FORMAT( dt_nasc, '00-%m-%d' )  ) AS Idade FROM `Paciente` WHERE Idade < 22;  

 

 

40 anos:

SELECT `Nome`, DATE_FORMAT( NOW( ) , '%Y' ) - DATE_FORMAT( dt_nasc, '%Y' ) - ( DATE_FORMAT( NOW( ) , '00-%m-%d' ) < DATE_FORMAT( dt_nasc, '00-%m-%d' )  ) AS Idade FROM `Paciente` WHERE Idade > 40; 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.