0

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

所以当我查询数据库时

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

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

4

4 回答 4

3

要么使用基本上是 INTEGER 类型的 Unix 纪元格式,要么使用时间字符串(YYYY-MM-DD 的东西)。可以在此处找到您可以使用的时间字符串格式列表。

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

于 2013-10-02T10:59:40.470 回答
1

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

如果您曾经比较或排序日期,或使用任何 SQLite 的内置日期函数,则必须使用受支持的日期格式之一,例如YYYY-MM-DD.

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

于 2013-10-02T13:00:31.573 回答
0

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

于 2013-10-02T10:50:15.863 回答
0

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

于 2013-10-03T12:10:58.680 回答