Comparar uma data no Oracle com HQL

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.

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:

  1. Reserve alguns minutos para amaldiçoar quem teve a péssima idéia de guardar uma data como caracter na base.

  2. Lembre-se de registrar no relatório de atividades que vc. gastou horas adicionais para contornar a besteira que foi feita

  3. 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)

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

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