Luthien 0 Denunciar post Postado Fevereiro 12, 2016 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
lokaodomau 61 Denunciar post Postado Fevereiro 12, 2016 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
Luthien 0 Denunciar post Postado Fevereiro 12, 2016 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
lokaodomau 61 Denunciar post Postado Fevereiro 12, 2016 A função DATE_FORMAT() transforma uma data em texto, o ideal é trabalhar com o formato DATE mesmo, existem várias funções de manipulação de datas. (neste link, funções de tempo e data no manual - em inglês) Veja sobre a função TIMESTAMPDIFF(): descobre a diferença entre duas datas. Compartilhar este post Link para o post Compartilhar em outros sites
Luthien 0 Denunciar post Postado Fevereiro 13, 2016 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