Usuário com melhor resposta
Pesquisar intervalo de datas.

Pergunta
-
Boa tarde. Como faço para pesquisar o intervalo de datas. Vou postar somente um fragmento da minha consulta, onde quando
coloco a data de 08/02/2017 e 09/02/2017(hoje) só me mostra os registros do dia 08. Que que me mostre do dia 09 também.
FROM DBA.PRODUTO_GRADE, POLITICA_PRECO_PRODUTO, PRODUTO, DBA.PRODUTO_TRIBUTACAO_ESTADO
WHERE PRODUTO_GRADE.IDSUBPRODUTO=POLITICA_PRECO_PRODUTO.IDSUBPRODUTO
AND PRODUTO.IDPRODUTO=PRODUTO_GRADE.IDSUBPRODUTO
AND PRODUTO_TRIBUTACAO_ESTADO.IDPRODUTO=PRODUTO.IDPRODUTO
AND PRODUTO_TRIBUTACAO_ESTADO.UF='MS'
AND(POLITICA_PRECO_PRODUTO.DTALTERACAOVAR) >= '08.02.2017'
AND(POLITICA_PRECO_PRODUTO.DTALTERACAOVAR) <= '09.02.2017'
Respostas
-
Deleted
- Marcado como Resposta JOSÉ ANTUNES COELHO sexta-feira, 10 de fevereiro de 2017 18:08
Todas as Respostas
-
Jose,
tente dessa forma :
CONVERT(DATE,POLITICA_PRECO_PRODUTO.DTALTERACAOVAR) BETWEEN '08.02.2017' AND '09.02.2017'
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
- Sugerido como Resposta Diego de Almeida Barreto (Lewis) quinta-feira, 9 de fevereiro de 2017 20:24
- Editado Diego de Almeida Barreto (Lewis) quinta-feira, 9 de fevereiro de 2017 20:24
-
-
Deleted
- Marcado como Resposta JOSÉ ANTUNES COELHO sexta-feira, 10 de fevereiro de 2017 18:08
-
JOSE,
Sim mas o correto nesse caso é utilizar o between, acredito que seu campo na tabela seja datetime, faz um cast no campo DTALTERACAOVAR para date e veja se resolve
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
-
Boa tarde. Como faço para pesquisar o intervalo de datas. Vou postar somente um fragmento da minha consulta, onde quando
coloco a data de 08/02/2017 e 09/02/2017(hoje) só me mostra os registros do dia 08. Que que me mostre do dia 09 também.
para vc filtrar do jeito que c está querendo
1º a sua coluna DTALTERACAOVAR deve estar no mesmo formato de data do seu filtro
pelo que vc descreveu sua data não está no formato padrão do sql (Ano-mes-dia)
veja o seu exemplo 08.02.2017
2º o seu critério DTALTERACAOVAR) <= '09.02.2017'
está desconsiderando todas as datas acima 09.02.2017 como por exemplo 09.02.2017:00:00:01
para vc realizar seu filtro vc deve desprezar tando as horas e minutos dos paramentos de filtro como nos dados da tabelaveja o exemplo
DECLARE @DataInicio DATETIME ='2017-02-08 22:26:38.987'; DECLARE @DataTermino DATETIME ='2017-02-09 22:26:38.987'; --Veja como fica as datas SELECT CAST(@DataInicio AS DATE) AS [Data inicio sem hora], CAST(@DataInicio AS DATE) AS [Data Termino sem hora] SELECT * FROM DBA.PRODUTO_GRADE , POLITICA_PRECO_PRODUTO , PRODUTO , DBA.PRODUTO_TRIBUTACAO_ESTADO WHERE PRODUTO_GRADE.IDSUBPRODUTO = POLITICA_PRECO_PRODUTO.IDSUBPRODUTO AND PRODUTO.IDPRODUTO = PRODUTO_GRADE.IDSUBPRODUTO AND PRODUTO_TRIBUTACAO_ESTADO.IDPRODUTO = PRODUTO.IDPRODUTO AND PRODUTO_TRIBUTACAO_ESTADO.UF = 'MS' AND CAST(POLITICA_PRECO_PRODUTO.DTALTERACAOVAR AS DATE) BETWEEN CAST(@DataInicio AS DATE)AND CAST(@DataTermino AS DATE)
isso levando em conta que sua coluna seja do tipo datetime , se não for vc deve converta-la pra tal
Wesley Neves
-
Obrigado a todos que responderam. Meu bando não é o SQL Server, mas pelas dicas passadas consegui resolver. Na verdade era questão de inverter as datas para ano, mês e dia e tirar as horas. Ficou assim:
cmd.Parameters.Add("?", DB2Type.Date).Value = dtIni.Value.ToString("yyyy/MM/dd");
-
Boa tarde José,
Por gentileza, marque como resposta aquela que o ajudou.
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.