Dessa forma pode acontecer algum erro ou a lógica está correta?
SELECT Nome, datanascimento, cpf FROM TabelaClientes
WHERE datanascimento < '2007-23-07';
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!
Dessa forma pode acontecer algum erro ou a lógica está correta?
SELECT Nome, datanascimento, cpf FROM TabelaClientes
WHERE datanascimento < '2007-23-07';
Bom dia, Sara! Como vai?
O valor '2007-23-07' está em um formato inválido para a maioria dos sistemas de banco de dados, como o MySQL ou o PostgreSQL, que geralmente esperam o formato YYYY-MM-DD (ano-mês-dia).
Logo, o correto seria:
SELECT Nome, datanascimento, cpf
FROM TabelaClientes
WHERE datanascimento < '2007-07-23';
Mas... ainda assim essa não é a melhor solução para resolver o problema.
No caso, esse código só funcionaria por um momento. Amanhã já seria necessário atualizar o dia novamente, porque estamos trabalhando com um período de tempo fixo para saber se o cliente é maior de idade ou não.
Logo, o mais correto é trabalhar com as funções de data. Dessa maneira:
SELECT Nome, DataNascimento, CPF
FROM TabelaClientes
WHERE NOT (YEAR(CURDATE()) - YEAR(DataNascimento) < 18);
Assim, independente de quando o sistema está sendo executado, ele sempre vai obter a data atual automaticamente.
Espero ter ajudado e fico à disposição se precisar.
Abraço e bons estudos!