Jump to content

Como filtrar coluna tipo data com WHERE


matheus motta

Postagens Recomendadas

Olá, estou começando a estudar SQL e queria uma ajuda.

Tentei filtrar data (coluna data_desfiliacao) no WHERE porque vi que nos dados existem datas em que o ano consta como 9000, 8000 etc. Daí tentei puxar apenas para a consulta quem havia se desfiliado ainda esse ano. Essa é a consulta:
 

SELECT data_filiacao, data_desfiliacao, DATE_DIFF(data_desfiliacao, data_filiacao, DAY) AS Tempo_filiado

FROM `basedosdados.br_tse_filiacao_partidaria.microdados` WHERE data_desfiliacao IS NOT NULL AND data_desfiliacao < 2025-01-01

ORDER BY Tempo_filiado DESC; 

Alguém sabe o porquê de não funcionar? A crítica que ele retorna é que a coluna data_desfiliacao deveria ser do tipo data ou número inteiro pra fazer essa operação, mas sabemos que essa coluna é de data

  • Curtir 1
Link to comment
Compartilhe em outros sites

Fala, @matheus motta!
 

Cara o problema é na comparação da coluna data_desfiliacao com uma data literal com o formato incorreto. Em SQL, ao comparar datas, você precisa assegurar que está usando o formato adequado para as datas e que está tratando-as como valores de data.

  • Certifique-se de que você está comparando data_desfiliacao com uma data literal no formato correto. Em SQL, geralmente utilizamos o formato YYYY-MM-DD para datas literais.
  • Utilize funções que lidam com datas para assegurar que as comparações sejam feitas corretamente.
     
SELECT 
  data_filiacao, 
  data_desfiliacao, 
  DATE_DIFF(data_desfiliacao, data_filiacao, DAY) AS Tempo_filiado
FROM 
  `basedosdados.br_tse_filiacao_partidaria.microdados` 
WHERE 
  data_desfiliacao IS NOT NULL 
  AND data_desfiliacao < '2025-01-01'
ORDER BY 
  Tempo_filiado DESC;
  • Coloquei a data '2025-01-01' entre aspas simples para garantir que ela seja tratada como um valor de data literal.
  • A função DATE_DIFF deve funcionar corretamente, assumindo que as colunas data_filiacao e data_desfiliacao estão no formato de data.
  • Verifique se a coluna data_desfiliacao está realmente armazenando valores de data no formato esperado. Se estiver no formato string, você pode precisar converter a string para data usando a função CAST ou PARSE_DATE.
  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...