如何计算Realm数据库中每个日期的条目数?

时间:2018-08-23 08:33:47

标签: android database realm

我有一个问题。我有一个领域数据库,其中每个条目都有一个 ID 和一个 DateCreated 。我将在图表中显示这些内容,该图表可以在上周,上个月和去年等范围之间进行过滤。

基本上,我想知道如何能够计算出不同日期的条目数,以便在折线图中显示它们。谢谢!

1 个答案:

答案 0 :(得分:0)

在您的情况下,我将使用Realm(自Realm 0.88.0起)使用setter并修改RealmObject中其他多个字段的功能。这样,您可以将dateCreated与数据分开放置,这样就不必执行what this answer says

public class MyClass extends RealmObject {
    @Index
    private long createdDay;
    @Index
    private long createdMonth;
    @Index
    private long createdYear;

    @Index
    private Date createdDate;

    public void setCreatedDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        int month = calendar.get(Calendar.MONTH) + 1; // Calendar is 0...11
        this.createdMonth = month;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        this.createdDay = day;
        int year = calendar.get(Calendar.YEAR);
        this.createdYear = year;

        this.createdDate = date;
    }
}

现在有了这个课程,你可以做

realm.where(MyClass.class).equalTo("createdYear", 2018) // for year

realm.where(MyClass.class).equalTo("createdYear", 2018)
                          .equalTo("createdMonth", 1) // for month


realm.where(MyClass.class).equalTo("createdYear", 2018)
                          .equalTo("createdMonth", 1)
                          .equalTo("createdDay", 12) // for day

您将获得2018年创建的对象,而不必创建从2018-01-01@00:00:00.0002018-12-31@23:59:59.999的日期。


但是,当然,使用getActualMinimumgetActualMaximum创建日期也可以。

编辑:

实际上,您的案件甚至可能比我上面所说的要简单,因为您只需要:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -7);
Date lastWeek = calendar.getDate();

RealmResults<MyClass> results = realm.where(MyClass.class)
                                  .greaterThanOrEqualTo("createdDate", lastWeek)
                                  .findAll();