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!