我正在开发一个应用程序,其中 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/