Al parecer hasta el dia de hoy el SDK 1.3.5  de GAE/J no ha resuelto el problema de los filtros de fechas. Es decir, si quiero buscar algun registro entre “X”  y “Y” fecha, los resultados son algo inconsistentes, no dan lo que se espera.

Aqui les dejo un código que indica una forma de hacer el filtrado aplicando propiedades, de esta manera el filtrado de comporta de buena manera.

Cabe resaltar que el operador “>” se comporta como “>=”,  el “>=” se actua como debe. El operador “<” se comporta normalmente pero el “<=” se actua como “<“. Asi que cuidado con los filtros.

  1. Query query = pm.newQuery(Transacciones.class);
  2. query.setFilter("idTipoTransaccion == "+ trans.getIdTipoTransaccion().toString() +
  3.           "&& "+"fecha <= mayor && fecha >= menor");
  4. query.declareImports("import java.util.Date");
  5. query.declareParameters("Date mayor, Date menor");
  6. query.setOrdering("fecha");

Ojo cuando hagamos la ejecución de la consulta, ya que debemos de darle formato a las fechas que van como parametro:

  1. java.text.SimpleDateFormat date = new java.text.SimpleDateFormat("dd/MM/yyyy");
  2. String mayorFecha = date.format(fechaFin);
  3. String menorFecha = date.format(fechaInicio);
  4. query.execute(date.parse(mayorFecha),date.parse(menorFecha));