我有两个约会。一个是当前日期,另一个是30天后的日期。所以我需要在Green Dao中获取这两个日期之间的数据。但我没有得到结果。
mycode的:
Date startRangeDate = new Date();
Date endRangeDate = dateBefore30Days;
QueryBuilder<StructSamePage> qb = UserDao.queryBuilder();
qb.where(UserDao.Properties.dateTime.between(startRangeDate.getTime(), endRangeDate.getTime()));
List<StructSamePage> list = qb.list();
答案 0 :(得分:2)
尝试交换您传递的日期。
Date startRangeDate = new Date();
Date endRangeDate = dateBefore30Days;
QueryBuilder<StructSamePage> qb = UserDao.queryBuilder();
qb.where(UserDao.Properties.dateTime.between(endRangeDate.getTime(),startRangeDate.getTime() ));
List<StructSamePage> list = qb.list();
如果左侧值小于右侧
,通常在之间有效答案 1 :(得分:0)
GreenDao之间的WhereCondition使用了这个:
/** Creates an "BETWEEN ... AND ..." condition for this property. */
public WhereCondition between(Object value1, Object value2) {
Object[] values = { value1, value2 };
return new PropertyCondition(this, " BETWEEN ? AND ?", values);
}
所以你应该相应地改变日期。因为您现在首先使用NOW,而在之前30天使用您的代码将执行此操作:
Value >= NOW AND Value <= 30 DAYS BEFORE
如果您使用greenDAO不使用的实际日期!你的代码看起来像这样:
today = 2016-03-04
30DaysAgo = 2016-02-03
WHERE dateTime >= 2016-03-04 AND dateTime <= 2016-02-03
如果你只是改变订单,那么你应该没事。
如果您想了解有关BETWEEN如何运作的更多信息,请阅读this
建议:greenDao在数据库中使用时间戳作为INTEGERS,所以如果你使用java Dates,你会得到一个也有时间的日期(当它被创建时),如果你只删除它30天,你就不会包括整天30天前,但只有当前日期对象及时创建的那一天。所以也许你想要一个没有时间的日历创建日期。