Ir para conteúdo

Arquivado

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

Luthien

Calcular idade a partir da data de nascimento

Recommended Posts

Olá,

 

Essa é a primeira lista de exercícios que o professor passa e estou tendo um pouco de dificuldade na hora de calcular a idade dos clientes. Já procurei em diversos fóruns e testei tudo que achei, porém a idade está vindo como NULL.

 

O Cliente tem os seguintes atributos:

+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| IDCli | int(11) | NO | PRI | NULL | |
| NomeCLi | varchar(45) | NO | | NULL | |
| SobrenomeCli | varchar(45) | NO | | NULL | |
| EnderecoCli | varchar(45) | YES | | NULL | |
| TelefoneCli | varchar(45) | YES | | NULL | |
| DT_Nasc | varchar(45) | NO | | NULL | |
+--------------+-------------+------+-----+---------+-------+

 

e eu inseri a mesma data de nascimento para todos:

 

update Cliente set DT_Nasc = '01/01/1990';

 

e estou tentando calcular a idade para cada um:

SELECT NomeCli, 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 Cliente;

 

essa foi minha última tentativa e o valor de idade continua sendo NULL... tenho que retornar só os que são maiores de idade mas preciso resolver isso antes de tudo. AGradeço se alguém puder me ajudar :D


Compartilhar este post


Link para o post
Compartilhar em outros sites

Altere o tipo de dado para DATE, use o padrão "ano-mês-dia" pra facilitar. (aaaa-mm-dd, ou no banco de dados %Y-%-%d)

 

Utilizar funções de data num campo de texto não funciona como muita gente gostaria.

 

____

 

Resumindo... Só altere o tipo do campo pra DATE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa que burrice a minha, jurava que tinha deixado como DATE :(

Fiz a alteração e no campo idade está aparecendo 2016, sinto q é coisa boba mas realmente n sei identificar, esse é meu primeiro contato com a linguagem

Obrigada pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo! O meu outro erro era q eu estava armazenando as datas no formato dd/mm/yyyy e o do mysql é yyyy-mm-dd. Muito obrigada! :)

Fiz assim:

select NomeCli,TIMESTAMPDIFF(YEAR,Cliente.DT_Nasc,curdate()) as Idade FROM Cliente;

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.