如何使用**日期对象**从** Realm数据库**获取数据?

时间:2018-01-11 10:43:23

标签: android date realm

我尝试了一些领域查询,但没有得到我想要的结果

让我们在下面的表中考虑(Realm表):

id    Name  DateTimeStamp

1      A    2017-01-01 08:00:00
2      B    2017-01-01 15:00:00
3      C    2017-01-02 08:00:00

现在我想要所有那些与日期“2017-01-01”匹配的记录。对于这种情况,我应该从领域表中得到2条记录。现在我没有得到任何记录。

有关信息“DateTimeStamp”列数据类型为“Date”。是的我需要在数据库中存储日期和时间,如表中所示。

我试过的查询是:

 long cnt = realm.where(ReservationObject.class).equalTo("DateTimeStamp",dateObject).count();

请帮帮我... 提前谢谢......

2 个答案:

答案 0 :(得分:9)

您需要为Date2017-01-01 00:00:00设置2017-01-02 00:00:00个对象,并在其间进行查询。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1); // make sure month stays valid
calendar.set(Calendar.YEAR, 2017);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date jan1 = new Date(calendar.getTimeInMillis());
calendar.set(Calendar.DAY_OF_MONTH, 2);
Date jan2 = new Date(calendar.getTimeInMillis());

然后

realm.where(ReservationObject.class)
     .greaterThanOrEqualTo("DateTimeStamp", jan1)
     .lessThan("DateTimeStamp", jan2)
     .findAll()

答案 1 :(得分:0)

使用contains就像LIKE

一样
long cnt =
 realm.where(ReservationObject.class)
 .contains("DateTimeStamp",dateObject).count();

或最新版本

public RealmQuery<E> like(String fieldName,
                      String value,
                      Case casing)