Cyber Monday

ATÉ 40% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

2
respostas

Logica da consulta

SELECT Nome, DataNascimento, CPF
FROM TabelaClientes
WHERE NOT (YEAR(CURDATE()) - YEAR(DataNascimento) < 18);

Gostaria de entender a lógica da consulta acima

2 respostas

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!