我正在开发一个应用,其中在会议室数据库中将Dates
输入为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
吗?
答案 0 :(得分:1)
您可以尝试将stringToDate(startTime)
更改为datetime(startTime)
吗?
您可以提供一个startTime对象样本吗?
答案 1 :(得分:1)
尝试:
@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