【问题标题】:Order table by date stored in text column按存储在文本列中的日期排序表
【发布时间】:2019-01-12 11:58:45
【问题描述】:

我有应用程序并在 SQLite 上存储了一些数据。我有一个名为 date 的列并存储字符串数据格式,例如:

30.12.2018 - 一些数据
01.01.2019 - 一些数据
31.12.2018 - 一些数据
02.01.2019 - 一些数据

但是当我想SELECT * FROM table ORDER BY date 时,这不能正常工作。我可以按照正确的日期顺序订购此表而不更改日期格式吗?

例如当我使用SELECT * FROM mytable ORDER BY date 所需的结果时:

02.01.2019 - 一些数据
01.01.2019 - 一些数据
31.12.2018 - 一些数据
30.12.2018 - 一些数据

【问题讨论】:

  • 这对 stackoverflow.com/questions/8948435/… 有帮助吗?还是您正在使用 Room?
  • 排序不正确的可能原因是因为它是一个字符串,所以“一些数据”部分正在影响排序。您应该从字段中删除该部分(可能创建一个新列),然后它应该可以工作。

标签: android sqlite date sql-order-by


【解决方案1】:

您必须更改此列的格式以避免出现这种情况
你需要这样的语句:

select * from mytable 
order by 
substr(date, 7, 4) || substr(date, 4, 2) || substr(date, 1, 2) || substr(date, instr(date, '-')) desc

这部分:

substr(date, 7, 4) || substr(date, 4, 2) || substr(date, 1, 2)

将日期重新排列为YYYYMMDD,使其具有可比性并且可以排序。

【讨论】:

    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2023-03-26
    • 2021-07-25
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2021-07-05
    • 2016-03-30
    相关资源
    最近更新 更多