【问题标题】:Is it possible to query for a date property in objectbox?是否可以在对象框中查询日期属性?
【发布时间】:2018-03-25 04:07:58
【问题描述】:

我正在尝试查询不同日期的数据。我找到了属性搜索,但看起来他们目前不支持搜索日期。有没有办法解决这个问题,而不必将日期存储为长或不必查询整个列表并将其过滤掉?甚至返回一个包含每个不同日期的第一个对象的完整对象列表也是可行的。

【问题讨论】:

  • 你如何存储你的日期?

标签: android objectbox


【解决方案1】:

请通过 GitHub 问题打开功能请求。我建议查询长值,并使用这些值创建一个日期数组/列表。

【讨论】:

  • 他们在更新版本中添加了该功能。请仔细阅读文档。
【解决方案2】:

这里我使用日期过滤了 objectbox:

public TOrder getTOrderByNumber(int number) {
    Long time = new Date().getTime();

    Date startDate = new Date(time - time % (24 * 60 * 60 * 1000));
    Date endDate = new Date(startDate.getTime() + 24 * 60 * 60 * 1000);

    return tOrderBox.query().equal(TOrder_.orderNumber, number).between(TOrder_.date, startDate, endDate).build().findFirst();
}

它符合我的要求。

【讨论】:

    【解决方案3】:

    我必须在 OffsetDateTime 中使用“ISO-8601 字符串”

    如果你想搜索今天的对象:

    private val mFormatterDate = DateTimeFormatter.ISO_LOCAL_DATE
    
    @JvmStatic
        fun fromOffsetDate(date: OffsetDateTime?): String? {
            return date?.format(mFormatterDate)
        }
    
    
    fun getWaterIntakes(): Pair<List<Water>, Float?> {
        val stringDate = TimeConverter.fromOffsetDate(OffsetDateTime.now())!!
        val list: List<Water> = mWaterBox.query().
            startsWith(Water_.date, stringDate)
            .order(Water_.date, QueryBuilder.CASE_SENSITIVE ).build().find()
        val firstMeasure: Float? = TimeConverter.convertISOToHours(list.firstOrNull()?.getTime())
        return Pair(list, firstMeasure)
    }
    

    再见!

    【讨论】:

      猜你喜欢
      • 2022-08-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 2023-01-13
      相关资源
      最近更新 更多