按日期以字符串形式订购房间结果

时间:2019-02-22 14:47:27

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

我正在开发一个应用,其中在会议室数据库中将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吗?

2 个答案:

答案 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