select - between 30/09/2008 and 30/09/2008 não retorna nada

Delphi

30/09/2008

olá,

tenho um formulário com consulta entre 2 datas...se eu colocar datas diferentes retorna o resultado tranquilo, por exemplo 01/09/2008 e 03/09/2008 retorna os registros...porém se eu colocar 01/09/2008 e 01/09/2009 não retorna nada..mesmo tendo registros nessa data e que apareceram na consulta com datas diferentes (01/09 - 03/09).
fiz assim: ´where venda.data_lancamento >= :dtini and venda.data_lancamento <= :dtfim´
assim:
´where venda.data_lancamento between :dtini and :dtfim´
acontece o mesmo ´problema´.
Como resolver?


Pablomezzomo

Pablomezzomo

Curtidas 0

Respostas

Pestana_

Pestana_

30/09/2008

qual banco você está utilizando? a questão da data deve estar no formato errado.


GOSTEI 0
Pablomezzomo

Pablomezzomo

30/09/2008

uso SQL, com MSDE...o extranho é q entre 2 datas com + de 1 dia de diferença a consulta roda...mas toda ajuda é bem vinda...


GOSTEI 0
Pestana_

Pestana_

30/09/2008

tem vários tópico falando sobre isso, de uma olhada neste dois tópicos:

http://forum.devmedia.com.br/viewtopic.php?t=97587&highlight=between
http://forum.devmedia.com.br/viewtopic.php?t=97160&highlight=between


GOSTEI 0
Pestana_

Pestana_

30/09/2008

uso SQL, com MSDE...o extranho é q entre 2 datas com + de 1 dia de diferença a consulta roda...mas toda ajuda é bem vinda...


eu trabalho com Interbase/Firebird. Você precisa consultar o formato de data do banco, acredito que deve estar errado no formato por isso que não está retornando o resultado correto.



flw.


GOSTEI 0
Nilsonalvernaz

Nilsonalvernaz

30/09/2008

Deus Abençoe a todos.

Pablo, é o seguinte:
você tá usando o metodo:

where venda.data_lancamento >= :dtini and venda.data_lancamento <= :dtfim
e 
where venda.data_lancamento between :dtini and :dtfim


resolvi esses problema em meu sistema da seguinte maneira

 and DtLancamento >= :DtInicial
 and DtLancamento <= :DtFinal


Note que coloquei Maior ou igual a data inicial e menor ou igual a data final.
ao contrário não daria certo, porém você fez a mesma coisa, dá uma revisada e vê se o problema é realmente a query. por que está igual ao que eu fiz.


GOSTEI 0
Pablomezzomo

Pablomezzomo

30/09/2008

alterei o formado pra MM/dd/yyyy porém acontece o mesmo problema


GOSTEI 0
Jair Bg

Jair Bg

30/09/2008

Bem, observando seu problema me veio referenciada ocorrência a data, neste caso criada no BD, apesar de informado como ´data´ porém seu tipo é ´timestamp´ o que provoca uma diferença relevante a tempo ´hora´ quando passado apenas a informação data não retorna registros, tente no caso adicionar ao parâmetro como ex: between ´01/09/2008 00:00:00´ and ´01/09/2008 23:59:58´ verifique!!!


GOSTEI 0
Nilsonalvernaz

Nilsonalvernaz

30/09/2008

meu Banco também é SQL server.
Vamos vê se podemos chegar a uma solução.
você já rodou esse Select no query analyser?
ele trás as datas que você colocou?
O formato de data que eu uso em todos os clientes é dd/mm/aaaa

nos parametros da data inicial e final como você colocou?
no meu tá assim:

Data Type = ftDatetime
Name = DtInicial ou DtFinal
NumericScale = 0
Param Type = ptInput
Precision = 0
Size = 0

Vê se o seu também está assim.
Fico no aguardo de um sim ou não


GOSTEI 0
Pablomezzomo

Pablomezzomo

30/09/2008

setei os mesmos parâmetros datatype, precision, size...mas o resultado é o mesmo...query analizer eu n tenho..pq uso MSDE...acho q só tem no SQLServer full


GOSTEI 0
Pablomezzomo

Pablomezzomo

30/09/2008

o formato do campo tem alguma influÊncia? gravo os valores de hora junto...no campo está armazenado assim: 24/09/2008 17:15:19
o formato no BD está datetime


GOSTEI 0
Pablomezzomo

Pablomezzomo

30/09/2008

fiz uma conexão ao BD usando acess (adp) e rodei a consulta com o critério:
WHERE (data_lancamento >= CONVERT(DATETIME, ´2008-09-24 00:00:00´, 102)) AND (data_lancamento <= CONVERT(DATETIME, ´2008-09-24 23:59:59´, 102))
e retornou certinho..como q passo isso (data com hora, min e segundo) no parâmetro pro delphi?


GOSTEI 0
Nilsonalvernaz

Nilsonalvernaz

30/09/2008

Da maneira que eu te passei, no meu banco a data entra tipo:
30/092008 00:00:00:00

Mas o formato que uso é dd/mm/aaaa o próprio Delphi ou banco não sei faz a conversão. estranho q não dá problema algum.

Como estou mexendo no sistema agora vou dá uma vasculhada pra ve se acho algum detalhe desapercebido.

Já tentou instalar o Management Studio 2005 para o sql server 2005 ele é de GRÁTIS e vc consegue conectar os bancos das versões anteriores
seria uma boa vc tentar pra vê como retorna a query no próprio SQL.


GOSTEI 0
Pablomezzomo

Pablomezzomo

30/09/2008

consegui resolver passando a data no formato MM/dd/yyyy + ´00:00:00´ na data inicial e +´23:59:59´ na data final


GOSTEI 0
Julio Cesar

Julio Cesar

30/09/2008

Eu estava com o mesmo problema, resolvi de forma bem simples, apenas setei a hora nas datas, principalmente na data final, pois quando não estipulamos a data ela e pesquisada com a hora 00:00

Então simpesmente fiz da seguinte maneira:

$StartDate = date("2017-07-14 00:00");
$EndDate = date("2017-07-14 23:59");

Retornou as informações do dia 14/07/2017.

Espero que tenha ajudado!
GOSTEI 0
Julio Cesar

Julio Cesar

30/09/2008

Eu estava com o mesmo problema, resolvi de forma bem simples, apenas setei a hora nas datas, principalmente na data final, pois quando não estipulamos a data ela e pesquisada com a hora 00:00

Então simpesmente fiz da seguinte maneira:

$StartDate = date("2017-07-14 00:00");
$EndDate = date("2017-07-14 23:59");

Retornou as informações do dia 14/07/2017.

Espero que tenha ajudado!
GOSTEI 0
POSTAR