我的日期是文本格式,因为 SQLite 没有日期和时间的数据类型,所以现在我想按日期对数据进行排序。
所以当我查询数据库时
SELECT jobno, ondate FROM Reports ORDER BY DATE(ondate)
这将返回按字母顺序而不是按数据排序的数据。我将如何按日期排序?
要么使用基本上是 INTEGER 类型的 Unix 纪元格式,要么使用时间字符串(YYYY-MM-DD 的东西)。可以在此处找到您可以使用的时间字符串格式列表。
对 unix-epoch 进行排序,就像对 INTEGER 类型进行排序一样,对时间字符串进行排序,就像对 TEXT 类型进行排序一样。
当 SQLite 比较/排序形式的字符串时dd/mm/YYYY
,它会像处理任何其他字符串一样处理它们,即字符串中的第一个字符具有优先级,例如,01/10/2013
排在 之前22/01/2000
。
如果您曾经比较或排序日期,或使用任何 SQLite 的内置日期函数,则必须使用受支持的日期格式之一,例如YYYY-MM-DD
.
(在您的特定查询中,您正在调用该DATE
函数,NULL
如果它不识别其参数的格式,则返回。这意味着您的记录根本没有排序。)
我会建议两件事,将您的日期以毫秒为单位或使用格式为 YYYYMMDD 的文本。每次要显示它们或要存储它们时都转换它们。它并不复杂,它会为你省去很多麻烦。
将日期存储为时间戳,即以毫秒为单位是更好的选择。