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