按日期作为字符串订购房间结果

Dan*_*iel 3 sql database android sql-order-by android-room

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

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

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

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

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

有什么办法可以DateString不修改数据库结构的情况下订购吗?

小智 5

尝试:

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

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

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