Ajuda com between

4 respostas
A

Bom dia pessoal, eu tenho uma consulta e nessa consulta eu uso um between o que ocorre é o seguinte. Quando pesquiso usando a data inicial e a data final a pesquisa não me retorna os documentos do dia escolhido da data final.

Exemplo: coloquei na data final 03/05/2013 a consulta não retorna os documentos desta data retornando somente até 02/05/2013.

Alguém pode me dar uma ajuda a resolver isso?

Desde já agradeço.

StringBuffer jpql = new StringBuffer();
		jpql.append("Select doc from DocumentoArrec as doc"); 
		jpql.append(" inner join doc.contribuinteDocumento as contrib");
		jpql.append(" Where");
		jpql.append("(" );
		jpql.append("((contrib.numrInscricaoEmitente = :inscricao");
		jpql.append(" or contrib.numrCnpjEmitente = :cnpj");
		jpql.append(" or contrib.numrCpfEmitente = :cpf");
		jpql.append(" or contrib.numrPlacaVeiculo = :placa)");
		if (numrDocumentoOrigem  != null && idTipoDocumentoPrecedente != null) {
			jpql.append(" and ");
			jpql.append("(doc.numrDocumentoOrigem = :numero and doc.tipoDocumentoPrecedente.idTipoDocPrecedente = :idTipoDoc)");
		}
		if (dataEmissaoInicial != null && dataEmissaoFinal != null){	
			jpql.append(" and (doc.dataEmissao between :dataInicial AND :dataFinal)" );
		}
		jpql.append("))");
		jpql.append(" Order by doc.dataEmissao");
		
		Query query = getEntityManager().createQuery(jpql.toString());
		
		query.setParameter("inscricao", numrInscricaoEmitente);
		query.setParameter("cnpj", numrCnpjEmitente);
		query.setParameter("cpf", numrCpfEmitente);
		query.setParameter("placa", numrPlacaVeiculo);
		
		if (numrDocumentoOrigem  != null && idTipoDocumentoPrecedente != null) {
			query.setParameter("numero", numrDocumentoOrigem);
			query.setParameter("idTipoDoc", idTipoDocumentoPrecedente);
		}
		if (dataEmissaoInicial != null && dataEmissaoFinal != null){	
			query.setParameter("dataInicial", dataEmissaoInicial, TemporalType.TIMESTAMP);  
			query.setParameter("dataFinal", dataEmissaoFinal, TemporalType.TIMESTAMP);
		}
        
		List<DocumentoArrec> lista = query.getResultList();
		return lista;		
		
	}

4 Respostas

D

Você está passando data e hora?
Provavelmente você tem que setar a hora da data final para 23:59:59. Espero que ajude.

Até mais!

A

Pelo campo na tabela ser TimeStamp está passando a hora sim. Irei tentar setar a hora da datafinal. Obrigado pela ajuda.

D

Certo então. Qualquer coisa me de um feedback.

Até mais!

ManoJava

Bom dia!

Vc pode resolver passando seu parametro dessa forma:

doc.dataEmissao >= :dataInicial and doc.dataEmissao <= :dataFinal)

Dessa forma, independente de data e hora, ele vai pegar td que estiver nesse intervalo, inclusive do dia corrente.

Att.

Criado 3 de maio de 2013
Ultima resposta 3 de mai. de 2013
Respostas 4
Participantes 3