Cabral
Novembro 13, 2006, 11:53am
#1
Pessoal bom dia,
tenho um campo no banco de dados Oracle que grava uma data neste formato:
12/12/2000 12:22:56
E preciso fazer uma consulta com o hibernate onde o usuário busca os registros de determinado dia. Ex: buscar processos executados em 15/10/2006.
Só que como eu não tenho a hora igual ele nunca vai encontrar estes registros.
Minha dúvida é: Existe a possibilidade de eu comparar somente com a data ao invés de comparar a hora também?
Muito Obrigado
Ricardo Cabral
Você tá usando a API Criteria? Se for o caso, você pode usar o método sqlRestriction da classe Restrictions e tentar passar uma restrição como “trunc(campo_data_do_campo) = :data”.
Lembrando que isso manda o índice do Oracle pra casa de cacete.
Cabral
Novembro 13, 2006, 12:50pm
#3
Rapaz, obrigado pela dica.
Collection<T> result = null;
String data = new SimpleDateFormat("dd/MM/yyyy").format(date.getTime());
Criteria cri = HibernateUtil.currentSession().createCriteria(CDR.class);
cri.add(Restrictions.sqlRestriction("to_char(DATA_PROCESS,'DD/MM/YYYY') = ?", data, Hibernate.STRING ));
result = cri.list();
desse jeito ai funcionou, mas será que o HQL não preve uma forma mais simples de fazer isso??? Esquisito não?
O campo da base é VARCHAR/VARCHAR2/CHAR ?
Se for e não for possível mudar isto enquanto é tempo:
Reserve alguns minutos para amaldiçoar quem teve a péssima idéia de guardar uma data como caracter na base.
Lembre-se de registrar no relatório de atividades que vc. gastou horas adicionais para contornar a besteira que foi feita
Tente usar uma função de conversão de [VAR]CHAR[2] para DATE, e faça a comparação em HQL usando um parâmetro do tipo java.util.Date ou subclasses:
Query q = session.createQuery(“from SuaClasse o where TO_DATE(o.colunaComData,’’) > :param”)
q.setDate(“param”,param)
Cabral
Novembro 13, 2006, 4:17pm
#5
psevestre, obrigado pela resposta.
o campo é date sim, mas o problema é que quando eu peço pra ele comparar ele compara os segundos e os milésimos e eu gostaria que ele comparasse só a data, pois senão ele nunca vai achar uma igual.
Ricardo Cabral
ceara
Maio 16, 2008, 1:45pm
#6
Cara, estou com o mesmo problema…
Mas vou ter q ‘sofrer’ com isso num order by .
Tu achou a solução!???
vou procurar algo na linha disso aqui!
http://www.guj.com.br/posts/list/39406.java