Olá,
Existem diversas maneria para você passar uma data para o relatório e utilizá-la na composição da query que realiza a consulta. Vou explicar a que considero mais simples.
Com iReport aberto e seu relatório carregado, procure pela janela Report Inspector, nela você encontrará uma separação chamada Parameters.
Crie um parâmetro chamado DATA. Com ele selecionado clique na janela de propriedades, então edite a propriedade Parameter Class para java.lang.String.
Abra o Report query (janela onde você digita sua consulta). Digite a sua consulta adicionando a cláusula WHERE, você poderá puxar o parâmetro data da área Available parameters.
Um exemplo de query usando um parâmetro:
SELECT * FROM usuarios WHERE dt_nascimento = $P{DATA}
Seu relatório estará pronto para receber o parâmetro e utilizá-lo na consulta.
Agora você deve alterar seu código para enviar o parâmetro. Os parâmetros são enviados para o relatório através de um Map com a chave sendo o nome do parâmetro definido no relatório e o valor como um objeto do tipo também definido no relatório.
Utilizando o exemplo da data, você precisaria formatar sua data para que ela fique compatível com o que o banco de dados utiliza. Se você está trabalhando com o objetos do tipo java.util.Date, pode utilizar um SimpleDateFormat para formatar as datas, por exemplo:
new SimpleDateFormat("yyyy-mm-dd").format(minhaData);
Então colocaria a data formatada em um Map:
Map<String, Object> parametros = new Hashmap<String, Object>();
parametros.put("DATA", minhaDataFormatada);
E por fim enviaria esse map para o relatório.
JasperPrint jp = JasperFillManager.fillReport("./meu_relatorio.jasper", parametros, con);
[ ]'s