none
BETWEEN - dúvida RRS feed

  • Pergunta

  • Ola pessoal...

    Eu usava o Access e passei a usar o Sql.

    Usando a consulta abaixo no Access com data inicial 16/11/2009, e data final 16/11/2009 me retornava os valores do dia 16/11/2009.

    No Sql Eu tenho que fornecer 16/11/2009 e 17/11/2009  para retorna os dados do dia 16/11/2009

    Isso está certo ou tem alguma coisa errada ?

    StrSql =

    "SELECT Vendas.Data, Vendas.IdVenda, CadFun.CogNome," & _
    " Vendas.Valor" & _
    " FROM Vendas INNER JOIN" & _
    " CadFun ON Vendas.IdCadFun = CadFun.IdCadFun" & _
    " WHERE Vendas.Data BETWEEN '" & _
    Format(parDataInicial,
    "yyyy/MM/dd") & "'" & _
    " AND '" & Format(parDatafinal, "yyyy/MM/dd") & "'" & _
    " AND Vendas.IdCadFilial =" & ParIdCadFilialDeOrigem & _
    " AND Vendas.IdCadFilialDestino =" & ParIdCadFilialDestino & _
    " AND Vendas.TipoDeOperacao ='" & "Transferencia" & "'"


    Grato pela ajuda.



    Petrarca
    segunda-feira, 16 de novembro de 2009 17:06

Respostas

  • Olá!!

    O problema é que no SQL Server quando se passa '16/11/2009', na verdade ele está considerando '16/11/2009 00:00:00'.

    Então, mude sua consulta para
    BETWEEN '16/11/2009' AND '16/11/2009 23:59:59'


    Vai resolver seu problema.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
    • Marcado como Resposta Petrarca segunda-feira, 16 de novembro de 2009 17:35
    segunda-feira, 16 de novembro de 2009 17:10

Todas as Respostas

  • Olá!!

    O problema é que no SQL Server quando se passa '16/11/2009', na verdade ele está considerando '16/11/2009 00:00:00'.

    Então, mude sua consulta para
    BETWEEN '16/11/2009' AND '16/11/2009 23:59:59'


    Vai resolver seu problema.



    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
    • Marcado como Resposta Petrarca segunda-feira, 16 de novembro de 2009 17:35
    segunda-feira, 16 de novembro de 2009 17:10
  • Isso ocorre porque provavelmente Vendas.Data esta sendo salvo com a parte da hora junto, tipo 16/11/2009 13:15:25.

    Veja os dados pelo SQL Manager para se certificar disso.

    Provavelmente o problema é na rotina de salvamento.

    att

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 16 de novembro de 2009 17:12
  • Boa tarde, Petrarca, como os amigos já disseram, vc deve tratar a questão da hora que esta sendo gravada junto a data.

    coloque desta forma no seu código(pela sintaxe acho q é vb)  e veja se resolve:


    STRSQL = "SELECT Vendas.Data, Vendas.IdVenda, CadFun.CogNome," & _
    " Vendas.Valor" & _
    " FROM Vendas INNER JOIN" & _
    " CadFun ON Vendas.IdCadFun = CadFun.IdCadFun" & _
    " WHERE DATEADD(DAY, DATEDIFF(DAY, 0, Vendas.Data) , 0) BETWEEN '" & _
    Format(parDataInicial, "yyyy-MM-dd") & "'" & _
    " AND '" & Format(parDatafinal, "yyyy-MM-dd") & "'" & _
    " AND Vendas.IdCadFilial =" & ParIdCadFilialDeOrigem & _
    " AND Vendas.IdCadFilialDestino =" & ParIdCadFilialDestino & _
    " AND Vendas.TipoDeOperacao ='" & "Transferencia" & "'"

     


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    segunda-feira, 16 de novembro de 2009 17:26
  • Ola alexandre...


    Mudei para

    StrSql =

    "SELECT Vendas.Data, Vendas.IdVenda, CadFun.CogNome," & _
    " Vendas.Valor" & _
    " FROM Vendas INNER JOIN" & _
    " CadFun ON Vendas.IdCadFun = CadFun.IdCadFun" & _
    " WHERE Vendas.Data BETWEEN '" & _
    Format(parDataInicial,
    "yyyy/MM/dd") & "'" & _
    " AND '" & Format(parDataFinal, "yyyy/MM/dd") & " 23:59:59" & "'" & _
    " AND Vendas.IdCadFilial =" & ParIdCadFilialDeOrigem & _
    " AND Vendas.IdCadFilialDestino =" & ParIdCadFilialDestino & _
    " AND Vendas.TipoDeOperacao ='" & "Transferencia" & "'"
    Return StrSql

    Funcionou, valeu sua ajuda...

    abs. Petrarca


    Petrarca
    segunda-feira, 16 de novembro de 2009 17:34
  • Mesmo assim, verifique sua rotina de salvamento... pode ser que vc tenha problema mais tarde, principalmente se vc esta considerando que Vendas.Data nao tenha o componente tempo, como por exemplo a query abaixo:
    Select * from Vendas where Data='2009-11-16';

    Pode ser que vc tenha surpresas nada agradaveis.

    Att






    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    SOGI INFORMATIQUE LTÉE (http://www.sogi.com)
    segunda-feira, 16 de novembro de 2009 18:29