Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Observações

A função que resolve o exercício não está no https://www.w3schools.com/, mas está no https://dev.mysql.com/.

Como eu não conhecia esse recurso, tentei o seguinte:

SELECT NOME, (YEAR(CURRENT_DATE())-YEAR(DATA_DE_NASCIMENTO)) as IDADE FROM tabela_de_clientes

Mas não dá certo. Por exemplo, a primeira da lista, Érica, aparece com 30 anos, quando na verdade tem 29. Hoje é dia 29/03/2020 e a Érica só faz aniversário em setembro. Como eu desconsiderei o mês, meu resultado foi errado.

O engraçado é que existe um campo IDADE, na TABELA DE CLIENTES, que não funciona. Porque é a idade de quando foi montado o banco, não é campo calculado. kkkkk

1 resposta
solução!

Olá Bruno tudo bem com você??

Primeiramente, parabéns pela iniciativa de ter ido buscar informação na documentação! Esse é um passo que cada vez mais irá se tornar comum, e você agiu perfeitamente bem! Não sei se na documentação chegou a ver como aplicar a TIMESTAMPDIFF que é a função existente para solucionar esse tipo de "problema" conforme mostrado na resposta do Instrutor.

SELECT NOME, TIMESTAMPDIFF (YEAR, DATA_DE_NASCIMENTO, CURDATE()) AS    IDADE
FROM  tabela_de_clientes

O link exato dessa parte na documentação se encontra AQUI.

Essa função ela possuí 3 parâmetros (unit, datetime_expr1, datetime_expr2) e retorna datetime_expr2 − datetime_expr1. Que seria basicamente o que você tentou fazer sem a utilização da função. Diferente da função Year já que que mencionou que o retorno foi errado, é por que ela leva em conta apenas o ano, como podemos observar na documentação:

YEAR(date)

Returns the year for date, in the range 1000 to 9999, or 0 for the “zero” date.


mysql> SELECT YEAR('1987-01-01');
        -> 1987

Espero que tenha ficado claro a explicação e caso ainda tenha dúvidas, é só retornar aqui! Bons estudos!