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!
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
Curtir tópico
+ 0
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:
Espero ter ajudado!
Abraço!
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
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
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!
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!
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
Clique aqui para fazer login e interagir na Comunidade :)