1
resposta

[Dúvida] Resolução Idade

Olá, boa tarde.

Fiquei com uma dúvida sobre a resolução de um exercício segue enunciado: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A minha resposta foi:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

A princípio, pensei que a diferença na idade fosse talvez pela data do curso, da criação da questão. Mas, ao usar o código da área Opinião do Instrutor, a saída é exatamente a esperada. Eu não entendi por que aconteceu a divergência, pode me explicar?

Obrigada.

1 resposta

Oi Fernanda,

Na primeira vez que fiz o meu código também tinha feito o mesmo código que o seu e tinha notado a mesma diferença quando executei o código do instrutor. Olhando com mais calma, percebi que na maneira inicial como fizemos, o código só está considerando o ano. Por exemplo, para o cliente Julia Costa, o código só está fazendo o ano de 2025 menos o ano de 1985. No código do instrutor, além de olhar o ano ele também está olhando o mês, como se fosse uma condição de verdadeiro ou falso. Então se o mês atual for menor que o mês da data de nascimento, isso é verdadeiro e ele tira 1 da diferença de ano calculada (pois significa que a pessoa ainda não fez aniversário), caso contrário ele tira 0 permanecendo a diferença de ano que foi calculada. Segue abaixo o meu código comentado:

SELECT Nome, 
       (strftime('%Y', 'now') - strftime('%Y', DataNascimento)) --Aqui só está vendo a diferença de ano
       - (strftime('%m', 'now') < strftime('%m', DataNascimento)) --E aqui usa o mês e funciona como uma condição de verdadeiro ou falso, se falso tira 0 e verdadeiro tira 1.
       AS Idade
FROM TabelaClientes;

Espero ter ajudado :)