我正在开发一个应用程序,其中 Dates 在 Room 数据库中作为 Strings 输入,SimpleDateFormat 固定为 '%d/%m/%Y %H:%M:%S'(例如“26/12/2018 10:33:31”)。

在不改变数据库结构的情况下,我想查询一些按日期排序的结果。这应该看起来像这样(在 Dao 中):

@Query("SELECT * FROM results ORDER BY stringToDate(startTime) DESC LIMIT :count")
List<Results> getLast(int count);

不幸的是,这会引发编译错误:“没有这样的函数:stringToDate”,无论该函数是否存在,即使它以适当的形式注释为 TypeConverter。

此外,由于 String 被接受为 Room 类型,我不确定我可以在这里使用 TypeConverter。

有什么方法可以在不修改数据库结构的情况下将 Date 订购为 String 吗?

最佳答案

尝试:

@Query("SELECT * FROM results ORDER BY strftime('%Y-%d-%m-%Y', startTime) DESC LIMIT :count")

确保传递给 strftime 的格式与您的时间格式相匹配。

引用格式可以在这里找到:
https://www.tutorialspoint.com/sqlite/sqlite_date_time.htm

关于android - 按日期作为字符串订购房间结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54829594/

10-12 00:32