Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Sem usar os operadores descritos na resolução

Dessa forma pode acontecer algum erro ou a lógica está correta?

SELECT Nome, datanascimento, cpf FROM TabelaClientes
WHERE datanascimento < '2007-23-07';
1 resposta
solução!

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado