Android 按日期以字符串形式订购房间结果
我正在开发一个应用程序,Android 按日期以字符串形式订购房间结果,android,sql,database,sql-order-by,android-room,Android,Sql,Database,Sql Order By,Android Room,我正在开发一个应用程序,日期作为字符串输入房间数据库,并将简化格式固定为'%d/%m/%Y%H:%m:%S'(例如“26/12/2018 10:33:31”) 在不改变数据库结构的情况下,我想查询一些按日期排序的结果。这可能看起来像这样(在Dao中): @Query(“按stringToDate(startTime)描述限制:计数从结果顺序中选择*) 列表getLast(整数计数); 不幸的是,这会引发编译错误:“没有这样的函数:stringToDate”,不管函数是否存在,即使它以适当的形式
日期
作为字符串
输入房间数据库,并将简化格式
固定为'%d/%m/%Y%H:%m:%S'
(例如“26/12/2018 10:33:31”)
在不改变数据库结构的情况下,我想查询一些按日期排序的结果。这可能看起来像这样(在Dao
中):
@Query(“按stringToDate(startTime)描述限制:计数从结果顺序中选择*)
列表getLast(整数计数);
不幸的是,这会引发编译错误:“没有这样的函数:stringToDate”,不管函数是否存在,即使它以适当的形式被注释为TypeConverter
此外,由于字符串被接受为房间类型,我不确定是否可以在这里首先使用TypeConverter
有没有什么方法可以在不修改数据库结构的情况下按
Date
作为String
进行订购?您可以尝试将stringToDate(startTime)
更改为datetime(startTime)
能否提供startTime对象的示例?请尝试:
@Query("SELECT * FROM results ORDER BY strftime('%Y-%d-%m-%Y', startTime) DESC LIMIT :count")
确保传递给strftime的格式与您的时间格式匹配
可在此处找到参考格式:
这应该是一条评论,而不是一个答案-如果你想询问更多关于这个问题的信息-请询问我的评论我很抱歉,我知道我没有足够的分数发表评论
strftime
的目的与我想做的相反:它将ISO日期转换为格式化字符串。但令人惊讶的是,这一半是有效的,因为它是作为日期订购的(在中不是这种情况),但它不会考虑DESC
。请看一下这个链接@DanChaltiel
@Query("SELECT * FROM results ORDER BY strftime('%Y-%d-%m-%Y', startTime) DESC LIMIT :count")