是否可以在objectbox中查询日期属性?

时间:2018-03-25 04:07:59

标签: android objectbox

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

在这里我使用日期在对象框中进行了过滤:

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();
}

它可以满足我的要求。

答案 2 :(得分:0)

我必须在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)
}

再见!