SELECT entre datas SQL Server

SQL Server

Delphi

Banco de Dados

23/03/2020

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!
Gxf

Gxf

Curtidas 0

Melhor post

Daniel Araújo

Daniel Araújo

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!
GOSTEI 1

Mais Respostas

Alex Lekao

Alex Lekao

23/03/2020

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!
GOSTEI 1
Gxf

Gxf

23/03/2020

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!
GOSTEI 0
POSTAR