【问题标题】:Help ordering a result by date in SQLite帮助在 SQLite 中按日期排序结果
【发布时间】:2011-04-20 16:17:49
【问题描述】:

SQLite 中是否有任何方法可以按日期排序,并且结果是按时间排序而不是按字母顺序排序?

例如:

SELECT * FROM details GROUP BY date;

John    |     Smith     |     April 01, 2011
John    |     Smith     |     April 03, 2011
John    |     Smith     |     April 04, 2011
John    |     Smith     |     March 25, 2011

三月应该在四月之前到来。

我猜这里的答案是将我的日期存储为长时间戳,但我不确定是否可以使用 SQLite 更轻松地完成。

谢谢!

【问题讨论】:

    标签: sql sqlite date


    【解决方案1】:

    SQLite 中没有内置的 DATE 类型(在其他一些数据库管理系统中存在),但它确实具有很好的日期和时间功能补充:http://www.sqlite.org/lang_datefunc.html

    您可以使用 date("April 01, 2011") 获取 ISO-8601 日期(例如,2011-04-01)。

    这种格式的优点是既是可读的字符串又是可排序的。 2011-03-25 按照标准的字符串比较规则自然在 2011-04-01 之前,所以不需要特殊操作。

    因此,以该格式存储您的日期,并使用 date() 函数(或其他相关函数)获取该格式。

    【讨论】:

    • 很简单,这对我有用。非常感谢您的解释和帮助!
    • 感谢您的链接,它救了我!如果您可以将“hello”放入其中,SQLite 允许您创建 DATETIME 类型的列似乎很愚蠢!我现在至少发现了sqlite.org/datatype3.html
    • 我只需要发帖感谢您,我已经搜索和调试了几天的解决方案。很好的解决方案,谢谢!
    【解决方案2】:

    您可以将日期转换为实际日期以进行比较。

    尝试在查询末尾添加order by julianday(date)

    http://www.sqlite.org/cvstrac/wiki?p=DateAndTimeFunctions

    【讨论】:

      【解决方案3】:

      date 必须是字符串,而不是实际日期。您需要将日期转换为实际日期。这是 Sqlite 日期和时间函数的链接。 http://www.sqlite.org/lang_datefunc.html

      【讨论】:

        【解决方案4】:

        你可以这样做

        select * from sometable order by date(thestringDateColumn)

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2011-07-22
          • 2016-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-14
          • 2012-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多