Fórum (Duvida) pesquisar entre datas com HQL #406487
12/08/2011
0
tenho entidade Feriados, esses feriados são fixo e moveis, os moveis sao qlquer data, mas os fixos tem ano 1970,
e so mostram na Visao o dia e mes, mas na hora de pesquisar entre datas estou com problemas, pois como o ano e 1970 ele nao me traz, na pesquisa, como eu posso fazer essa pesquisa?
sem ter problemas com o ano
Wisley Souza
Curtir tópico
+ 0Posts
12/08/2011
Davi Costa
Mesmo assim quando pesquisar use um ou (or) passando a data com o ano de 1970 tb, traria tudo,p ano que vc passou e p ano de 1970
att Davi
Gostei + 0
12/08/2011
Wisley Souza
pq os fixos sao sempre na mesma data, exemplo natal...dai o ano padra pra feriados fixos e 1970...
dai se eu pesquisar entre 02/02/2011 a 12/12/2011
ele me traz todos os feriados moveis nessa facha
e me traz os os fixos tbm, so que no caso do fixo ele desconsidera o ano e soleva em conat dia e mes...
o resultada pesquisa sicaria assim
TIPO data
fixo 03/02 fixo 05/07 movel 01/05/2011
entendeu?
Gostei + 0
12/08/2011
Davi Costa
acho que é por ai que vc pode resolver comparando só parte das datas através de sql ansi, isso é tranquilo de fazer com postgresql, oracle, sqlserver.... e por ai vai
att Davi
Gostei + 0
16/08/2011
Wisley Souza
if (filtro.getDataInicio() != null) {
Calendar c = Calendar.getInstance(); c.setTime(filtro.getDataInicio()); c.set(Calendar.YEAR, 1970);
Date date = c.getTime();
hql .appendCondicao("( ((f.data >= :dataInicio) and (year(f.data) is not 1970))" + " or " + "((f.data >= :dataInicioI ) and (year(f.data) is 1970) ) )");
hql.setParameter("dataInicio", filtro.getDataInicio()); hql.setParameter("dataInicioI", date); } } if (filtro.getDataFim() != null) {
Calendar c = Calendar.getInstance();
c.setTime(filtro.getDataFim()); if (filtro.getDataInicio() != null) { Calendar dtIni = Calendar.getInstance(); dtIni.setTime(filtro.getDataInicio()); if (c.get(Calendar.YEAR) == dtIni.get(Calendar.YEAR)) { c.set(Calendar.YEAR, 1970); } else if (c.get(Calendar.YEAR) > dtIni.get(Calendar.YEAR)) { c.set(Calendar.YEAR, 1971); } } else {
c.set(Calendar.YEAR, 1971); } Date date = c.getTime();
hql .appendCondicao(" ( ((f.data <= :dataFim ) and (year(f.data) is not 1970) )" + " or " + "((f.data <= :dataFimF)and (year(f.data) is 1970)))");
hql.setParameter("dataFim", filtro.getDataFim()); hql.setParameter("dataFimF", date); }
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)