Caros,
tenho um campo data mapeado da seguinte forma:
@Column
@Temporal(TemporalType.TIMESTAMP)
Date data;
Quero fazer uma consulta que retorne objetos cadastrados dentro de um determinado intervalo.Segue o código:
if(filtro.getDataInicial()!=null){
criteria.add(Restrictions.ge("data", filtro.getDataInicial()));
}
if(filtro.getDataFinal()!=null){
criteria.add(Restrictions.le("data", filtro.getDataFinal()));
}
Meu problema é por ex:tenho registros dos dias 15/09/2011 e 16/09/2011, e se eu tentar fazer uma consulta com dataInicial=15 e dataFinal = 16 me retorna apenas os registros do dia 15. Estou fazendo algo de errado?
dtxk
Setembro 16, 2011, 2:03pm
#2
ta certo oq vc esta fazendo… tem registro no banco?
dtxk
Setembro 16, 2011, 2:05pm
#4
raf4ever:
Sim.
vc debugou e ele ta entrando nos ifs?
No banco esse campo é do tipo timestamp WITH TIMEZONE ,será que isso impacta em algo?
dtxk:
[quote=raf4ever]Sim.
vc debugou e ele ta entrando nos ifs?[/quote]
Está sim.
dtxk
Setembro 16, 2011, 2:09pm
#7
é Sql server? use “datetime” e roda de novo para ver se funciona
é Sql server? use “datetime” e roda de novo para ver se funciona[/quote]
Postgres
dtxk
Setembro 16, 2011, 2:21pm
#9
é Sql server? use “datetime” e roda de novo para ver se funciona[/quote]
Postgres[/quote]
Cara, seguinte insere no banco duas linhas e monta um select no braço…
se nao for isso nao sei mas oq pode ser…
pmlm
Setembro 16, 2011, 5:23pm
#10
Provavelmente os teus registos têm a hora definida. E os teus filtros não. E assim estás a procurar os registos entre 15/09/2011 00:00:00 e 16/09/2011 00:00:00.
Dessa forma, todos os registos de 16 depois da meia noite não são devolvidos.
LPJava
Setembro 17, 2011, 8:20am
#11
se tu quer considerar apenas a data, muda a tua anotação temporal para Date. como pmlm o teu filtro deve está considerando apenas a data.
flw.