Dessa forma pode acontecer algum erro ou a lógica está correta?
SELECT Nome, datanascimento, cpf FROM TabelaClientes
WHERE datanascimento < '2007-23-07';
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!