Hola, ya lo tengo resuelto. El problema era que jasperreport me cogía la fecha con formato MM/dd/yyyy, y yo se lo pasaba de otra manera. Así que en la consulta he cambiado los:
a.scheduledTime between $P{fechaInformeDesde} and $P{fechaInformeHasta}
por
a. scheduledTime >= $P{fechaInformeDesde} and a. scheduledTime < $P{fechaInformeHasta}
y
b. scheduledTime >= $P{fechaInformeDesde} and b. scheduledTime < $P{fechaInformeHasta}
, y en el servlet, he hecho lo siguiente para conseguir el formato adecuado:
Código:
//obtengo el dia, mes y año introducidos
String arrayFecha[] = reportDateString.split("/");
String dia = arrayFecha[0];
String mes = arrayFecha[1];
String anno = arrayFecha[2];
//fecha desde la que se hace la consulta
String fechaStringDesde = mes + "/" + dia + "/" + anno;
//fecha hasta la que se hace la consulta
String fechaStringHasta = "";
GregorianCalendar calendario = new GregorianCalendar (Integer.parseInt(anno), Integer.parseInt(mes), 1);
//obtengo el numero maximo de dias del mes
int numDays = calendario.getActualMaximum(Calendar.DAY_OF_MONTH);
//si es el ultimo dia del mes 12
if (mes.equals(12) && dia.equals(String.valueOf(numDays)))
{
anno = String.valueOf(Integer.parseInt(anno) + 1);
mes = "01";
dia = "01";
}
//si es cualquier otro mes
if (!mes.equals("12"))
{
//si es el ultimo dia del mes
if (dia.equals(String.valueOf(numDays)))
{
mes = String.valueOf(Integer.parseInt(mes) + 1);
dia = "01";
}
//si es cualquier otro dia
else
{
dia = String.valueOf(Integer.parseInt(dia) + 1);
}
}
fechaStringHasta = mes + "/" + dia + "/" + anno;
Date fechaInformeDesde = formato.parse(fechaStringDesde);
Date fechaInformeHasta = formato.parse(fechaStringHasta);
parameters.put("fechaInformeDesde", fechaInformeDesde);
parameters.put("fechaInformeHasta", fechaInformeHasta);
Espero que todo esto le ayude a alguien, a mí me ha dado unos cuantos quebraderos de cabeza.
Un saludo y gracias por todo