【发布时间】:2018-03-25 04:07:58
【问题描述】:
我正在尝试查询不同日期的数据。我找到了属性搜索,但看起来他们目前不支持搜索日期。有没有办法解决这个问题,而不必将日期存储为长或不必查询整个列表并将其过滤掉?甚至返回一个包含每个不同日期的第一个对象的完整对象列表也是可行的。
【问题讨论】:
-
你如何存储你的日期?
我正在尝试查询不同日期的数据。我找到了属性搜索,但看起来他们目前不支持搜索日期。有没有办法解决这个问题,而不必将日期存储为长或不必查询整个列表并将其过滤掉?甚至返回一个包含每个不同日期的第一个对象的完整对象列表也是可行的。
【问题讨论】:
请通过 GitHub 问题打开功能请求。我建议查询长值,并使用这些值创建一个日期数组/列表。
【讨论】:
这里我使用日期过滤了 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();
}
它符合我的要求。
【讨论】:
我必须在 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)
}
再见!
【讨论】: