RESOLVIDO: Problemas com datas, Date e Timestamp

2 respostas
ingridcm7

Oi, no meu formulario tenho dois campos Data inicial e final, onde são setados por um calendario feito em ajax, q pega dia/mes/ano…
no meu banco tenho um campo chamado “data” q eh um timestamp… eu preciso q seja time stamp pq tenho q armazenar o horario tb…
na minha consulta esta assim:

... (date(env.dataEnvio) >= date(to_timestamp(:dataIniEnvio)) or date(to_timestamp(:dataIniEnvio)) is null) and (date(env.dataEnvio) <= date(to_timestamp(:dataFimEnvio)) or date(to_timestamp(:dataFimEnvio)) is null)

o problema está qnd eu passo as datas nulas, onde deveriam trazer tds os registros. qnd preencho os campos dá certo.

ERROR: function to_timestamp(bytea) does not exist

o HQL transforma o date nulo em bytea…

alguem sabe como resolver ou tem outra soluçao p/ isso?

2 Respostas

joede.fadel

se vc está sentando uma data do banco no formato de dd/mm/yyyy vai dar erro msmo
vc pode utilizar este método aqui

public Date valData(String data) {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        try {
            sdf.setLenient(false);//valida data
            return sdf.parse(data);
        } catch (ParseException ex) {
            javax.swing.JOptionPane.showMessageDialog(null, "Data Invalida", "ERRO", javax.swing.JOptionPane.ERROR_MESSAGE);
            return null;
        }

    }
ingridcm7

resolvido c/ criteria...

Session session = getHibernateDao().getCurrentSession();
		Criteria criteria = session.createCriteria( Envio.class );
...

                if( dataFimEnvio != null )
		{
			Calendar cal = Calendar.getInstance();
		 if(dataFimEnvio.equals(dataIniEnvio)){
			cal.setTime(dataFimEnvio);
			cal.add(Calendar.DAY_OF_MONTH,1);
			dataFimEnvio = cal.getTime();
		 }
			criteria.add( Restrictions.le("dataEnvio", dataFimEnvio) );
		}
		
		return criteria.list();

tive q fzr a comparaçao se elas forem iguais e adicionar + 1, p/ poder trazer tds os registros do dia, senao traria só os q fossem ate 12:00 AM, entao nao pegava os q estavam depois disso, entao adicionei + 1, q vai ate as 12:AM do dia seguinte.

8)

Criado 30 de janeiro de 2009
Ultima resposta 30 de jan. de 2009
Respostas 2
Participantes 2