Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] DESAFIO AULA 1 - Dúvida na Data de Cadastro

"Identifique os clientes que se cadastraram na empresa antes de 2020. Liste o nome e a data de cadastro desses clientes. Utilize a cláusula WHERE para filtrar os registros. "

Apesar de ter feito a atividade e ter obtido o resultado correto, a minha dúvida é na questão do tipo primitivo do dado. Na coluna de 'data_de_cadastro' está como tipo TEXT, então por que o meu código, ao invés de ter colocado " WHERE data_de_cadastro <'2020-01-01' ", coloquei "WHERE data_de_cadastro < 2020" e deu certo? Sendo que pelo que me parece é um inteiro.

2 respostas
solução!

Olá, Gustavo! Como vai?

O SQLite compara a string "2020" com o número inteiro 2020 como se ambos fossem strings. Ele converte o número inteiro 2020 para a string "2020" e realiza a comparação lexicograficamente, caractere por caractere.

É interessante notar que o SQLite permite comparações de strings que se comportam de maneira semelhante a comparações numéricas, desde que o formato da string permita isso.

No seu caso, a data 2020-01-01 é uma string que segue o formato YYYY-MM-DD. Quando a comparação com 2020 foi feita, o SQLite conseguiu interpretar corretamente a comparação porque ele compara as strings lexicograficamente (ou seja, pela ordem dos caracteres).

Por exemplo:

  • 2019-12-31 < 2020
  • 2020-01-01 >= 2020

Então, quando você usou WHERE data_de_cadastro < 2020, o SQLite entendeu 2020 como uma string e comparou cada data de cadastro com essa string. Como todas as datas que começam com 2019 ou qualquer ano anterior são lexicograficamente menores que 2020, a comparação funciona corretamente.

→ É importante destacar que, apesar de funcionar nesse caso específico, usar o formato completo da data (AAAA-MM-DD) é a melhor prática para garantir clareza e evitar problemas futuros.

Espero ter contribuído para a sua compreensão sobre esse assunto!

Desejo sucesso! Continue firme nos estudos! ✨✨

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

Boa tarde! Outros SGBD's também conseguem comparar Strings com números Inteiros ou isso é exclusividade do SQlite?