Отфильтруйте свойство даты между начальной и конечной датами с помощью JDOQL - PullRequest
0 голосов
/ 02 марта 2010

Я хочу написать функцию, чтобы получить список Entry объектов, чье поле date находится между beginPeriod и endPeriod. Я должен вычесть день из даты начала периода. Кажется, условие великое или равное не работает.

Есть идеи, почему у меня такая проблема?

public static List<Entry> getEntries(Date beginPeriod, Date endPeriod) {
/* TODO 
 * The great or equal condition does not seem to work in the filter below
 * Substract a day and it seems to work 
 */
Calendar calendar = Calendar.getInstance();
calendar.set(beginPeriod.getYear(), beginPeriod.getMonth(), beginPeriod.getDate() - 1);
beginPeriod = calendar.getTime();

PersistenceManager pm = JdoUtil.getPm();
Query q = pm.newQuery(Entry.class);     
q.setFilter("this.date >= beginPeriodParam && this.date <= endPeriodParam");
q.declareParameters("java.util.Date beginPeriodParam, java.util.Date endPeriodParam");         
List<Entry> entries = (List<Entry>) q.execute(beginPeriod,endPeriod);
return entries;
}

1 Ответ

0 голосов
/ 18 марта 2010

Полагаю, это потому, что массивы начинаются с 0. Я пытался определить ваш (мой запрос ничего не возвращает ??) и заметил, что это верно в течение месяцев - 1 => Февраль, 4 => Май и т. Д.

...