【问题标题】:Order Room results by Date as String按日期排序房间结果为字符串
【发布时间】:2019-02-22 14:47:27
【问题描述】:

我正在开发一个应用程序,其中 Dates 在 Room 数据库中输入为 StringsSimpleDateFormat 固定为 '%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);

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

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

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

    【解决方案2】:

    您可以尝试将stringToDate(startTime) 更改为datetime(startTime) 吗?

    你能提供一个 startTime 对象的样本吗?

    【讨论】:

    • 这应该是评论而不是答案 - 如果您想请求有关该问题的更多信息 - 请在评论中询问
    • 对不起,我知道,但我没有足够的积分来发表评论
    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多