SELECT entre datas SQL Server

23/03/2020

0

Boa tarde. Estou fazendo um SELECT por datas, porém o resultado não esta filtrando corretamente.

SELECT periodo
FROM minhaTabela
WHERE periodo BETWEEN '01/2020' and '02/2020'


Retornou periodo de 02/2019 tbm!



OBS: o campo de data no BD foi criado como VARCHAR (não posso alterar isso). Algúem poderia ajudar?

Abs!
Responder

Post mais votado

23/03/2020

Olá Gabriel!

Quando você grava um campo como varchar, o clausula BETWEEN vai tratar o valor desse campo como texto, e utilizar a ordem alfabética para filtrar o intervalo. Por isso esse select não dá certo. Você tem que utilizar o campo no formato YYYYMM para dar certo. Tenta assim:
SELECT periodo
  FROM minhaTabela
 WHERE SUBSTRING(periodo, 4, 4) + SUBSTRING(periodo, 1, 2) BETWEEN '202001' AND '202002'


Espero ter ajudado!
Abraço!

Daniel Araújo

Daniel Araújo
Responder

Mais Posts

24/03/2020

Alex Lekao

Olá GF, bom dia!!!!

Vc pode usar o comando convert para fazer a conversão para datas, ou vice verça, ou simplesmente usar o comando format para dar o formato de data desejado e verificar se atende a sua demanda.

o padrão das datas no DB é brasileiro? caso sim, e so usar convert(varchar(7),sua_data,103) e ver se funciona, ou utilizar format(sua_data,'mm/yyyy,'pt-br') não to lembrando a estrutura do comando agora, mas acredito que dará o resultado que vc espera.

Espero que ajude.

Atenciosamente,

Alex

Boa tarde. Estou fazendo um SELECT por datas, porém o resultado não esta filtrando corretamente.

SELECT periodo
FROM minhaTabela
WHERE periodo BETWEEN '01/2020' and '02/2020'


Retornou periodo de 02/2019 tbm!



OBS: o campo de data no BD foi criado como VARCHAR (não posso alterar isso). Algúem poderia ajudar?

Abs!
Responder

24/03/2020

Gxf

Bom dia!

Agradeço ambas as respostas.

Testando a função passado pelo Daniel Araújo se encaixou perfeitamente com oq eu desejava. Muito obrigado mesmo!! Aos dois.

Abs!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar