SELECT Nome, DataNascimento, CPF
FROM TabelaClientes
WHERE NOT (YEAR(CURDATE()) - YEAR(DataNascimento) < 18);
Gostaria de entender a lógica da consulta acima
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
SELECT Nome, DataNascimento, CPF
FROM TabelaClientes
WHERE NOT (YEAR(CURDATE()) - YEAR(DataNascimento) < 18);
Gostaria de entender a lógica da consulta acima
A consulta elaborada por mim, foi:
SELECT id_emprestimo, DataInicio, Tipo, Valor
FROM TabelaEmprestimo
WHERE DataInicio BETWEEN '2023-01-01' AND '2023-03-31';
SELECT nome,datanascimento,cpf from tabelaclientes
WHERE datanascimento <= '2007-01-01';
que deu a mesmo resultado, mas gostaria de entender a logica da consulta informada
Oi, Murilo! Como vai?
A lógica da consulta apresentada na solução pode parecer um pouco diferente à primeira vista, mas a ideia é simples. O trecho YEAR(CURDATE()) - YEAR(DataNascimento) calcula a idade aproximada da pessoa usando apenas o ano atual menos o ano de nascimento. Em seguida, a condição NOT ( … < 18 ) inverte o critério: em vez de filtrar quem tem menos de 18, ela mantém somente quem não tem menos de 18, ou seja, quem tem 18 anos ou mais.
É normal estranhar essa construção no começo, mas com o tempo a leitura de expressões envolvendo NOT fica mais natural. A sua consulta também funciona porque compara diretamente a data completa.
Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!