android - 按日期排序房间结果为字符串

标签 android sql database sql-order-by android-room

我正在开发一个应用程序,其中 Dates 作为 Strings 输入到 Room 数据库中,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/

相关文章:

Android UnsatisfiedLinkError 与 OpenCV 2.4.2

android - 如何关闭ActionBar(ActionBarSherlock)下的蓝线?

java - 通过实例引用访问静态成员的最佳解决方案

sql - 如何在 Postgresql 数据库中添加不允许空值的列?

数据库设计: a 'code' table that get referenced by other entities

php - 获取两个日期之间的日期列表并将数据插入数据库

java - 在 Android 中获取真实屏幕尺寸

sql - 如何知道a列是否包含所有NULL

sql - 如何获取从第二个日期到最新日期的所有行?

mysql - cakePHP自动从mysql中删除数据