none
Pesquisar intervalo de datas. RRS feed

  • 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'

    quinta-feira, 9 de fevereiro de 2017 20:17

Respostas

Todas as Respostas

  • Jose,

    tente dessa forma :

    CONVERT(DATE,POLITICA_PRECO_PRODUTO.DTALTERACAOVAR) BETWEEN '08.02.2017' AND '09.02.2017'	


    Diego Almeida Barreto&lt;/strong&gt; &lt;br/&gt; &lt;em&gt;System Analyst / Software Developer&lt;/em&gt; &lt;br/&gt; &lt;img &lt;/p&gt; &lt;/div&gt;


    quinta-feira, 9 de fevereiro de 2017 20:23
  • Na verdade Between e os operadores < > são a mesma coisa. Não deu certo, mesmo assim agradeço.
    quinta-feira, 9 de fevereiro de 2017 20:47
  • Deleted
    quinta-feira, 9 de fevereiro de 2017 21:30
  • 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&lt;/strong&gt; &lt;br/&gt; &lt;em&gt;System Analyst / Software Developer&lt;/em&gt; &lt;br/&gt; &lt;img &lt;/p&gt; &lt;/div&gt;

    quinta-feira, 9 de fevereiro de 2017 22:40
  • 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 tabela

    veja 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

    sexta-feira, 10 de fevereiro de 2017 00:31
  • 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");

    sexta-feira, 10 de fevereiro de 2017 13:34
  • 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.

    sexta-feira, 10 de fevereiro de 2017 16:08