SELECT Nome, DataNascimento, CPF
FROM TabelaClientes
WHERE NOT (YEAR(CURDATE()) - YEAR(DataNascimento) < 18);
Gostaria de entender a lógica da consulta acima
ATÉ 40% OFF
TÁ ACABANDO!
0 dias
0 horas
0 min
0 seg
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!