【问题标题】:SQLite sort by dateSQLite 按日期排序
【发布时间】:2013-10-02 10:47:13
【问题描述】:

我的日期是文本格式,因为 SQLite 没有日期和时间的数据类型,所以现在我想按日期对数据进行排序。

所以当我像这样查询数据库时

SELECT jobno, ondate FROM Reports ORDER BY DATE(ondate)

这将返回按字母顺序而不是按数据排序的数据。我将如何按日期排序?

【问题讨论】:

  • 你检查SELECT jobno, DATE(ondate) FROM Reports了吗?可能DATE() 无法解析您的数据。在sqlite.org/lang_datefunc.html 时间字符串部分检查支持的格式。
  • ondate 列中的值的格式是什么?
  • 格式为 dd/mm/YYYY
  • 日期应该是长(毫秒)格式。

标签: android sqlite sorting date


【解决方案1】:

要么使用 Unix-epoch 格式,它基本上是一个 INTEGER 类型,要么使用时间字符串(YYYY-MM-DD 的东西)。 可以使用的时间字符串格式列表可以在here找到。

对 unix-epoch 进行排序,就像对 INTEGER 类型进行排序一样,对时间字符串进行排序,就像对 TEXT 类型进行排序一样。

【讨论】:

    【解决方案2】:

    当 SQLite 比较/排序dd/mm/YYYY 形式的字符串时,它会像处理任何其他字符串一样处理它们,即字符串中的第一个字符具有优先权,例如,01/10/2013 排在22/01/2000 之前。

    如果您曾经比较或排序日期,或使用任何 SQLite 的 built-in date functions,您必须使用一种受支持的日期格式,例如 YYYY-MM-DD

    (在您的特定查询中,您正在调用 DATE 函数,如果它无法识别其参数的格式,则返回 NULL。这意味着您的记录根本没有排序。)

    【讨论】:

      【解决方案3】:

      我会建议 2 件事,将您的日期以毫秒为单位或使用格式为 YYYYMMDD 的文本。 每次要显示它们或要存储它们时都转换它们。 不复杂,省去不少麻烦。

      【讨论】:

      【解决方案4】:

      将日期存储为时间戳,即以毫秒为单位是更好的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-14
        • 1970-01-01
        • 2021-04-22
        • 1970-01-01
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多