如何在greenDao数据库中的两个日期之间获取数据

时间:2016-03-04 08:10:25

标签: android sqlite date greendao

我有两个约会。一个是当前日期,另一个是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();

2 个答案:

答案 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天前,但只有当前日期对象及时创建的那一天。所以也许你想要一个没有时间的日历创建日期。