Android 在sqlite中按子字符串排序(日期递减)

Android 在sqlite中按子字符串排序(日期递减),android,sqlite,date,Android,Sqlite,Date,我正在尝试按日期、降序对对象进行排序。日期的格式如下:dd-MM-yyy。如何使用子字符串对此进行排序 编辑:我现在有 "order by substr(Date, 7, 4),substr(Date, 4, 2), substr(Date, 1, 2) DESC"; 根据substr的文档,它应该可以做到这一点 问题在于2014年12月1日和2015年12月2日出现在2014年1月10日和2014年1月9日之间,如下所示: 10-1-2014 1-12-2014 2-12-2015 9-1

我正在尝试按日期、降序对对象进行排序。日期的格式如下:dd-MM-yyy。如何使用子字符串对此进行排序

编辑:我现在有

 "order by substr(Date, 7, 4),substr(Date, 4, 2), substr(Date, 1, 2) DESC";
根据substr的文档,它应该可以做到这一点

问题在于2014年12月1日和2015年12月2日出现在2014年1月10日和2014年1月9日之间,如下所示:

10-1-2014
1-12-2014
2-12-2015
9-1-2014
应该是这样的

2-12-2015
1-12-2014
10-1-2014
9-1-2014

现在问题解决了,我必须确保我所有的日期都在这张表上:01-01-2010(而不是1-1-2010),并使用这一行

 "order by substr(Date, 7, 4) DESC,substr(Date, 4, 2) DESC, substr(Date, 1, 2) DESC";

如果要比较日期,请不要将日期存储为文本。如果要比较,则可能应该使用内置的日期和时间函数:如果不理解此行,则尝试使用复制/粘贴进行编码。这不是一个成功的战略。为什么不阅读
SUBSTR
的文档,了解它的功能,然后找出代码行?这并不难。顺便说一下,@zapl是对的。将日期存储为字符串是个坏主意。只有在需要格式化日期以显示给用户时,才应将日期转换为字符串。永远不要用字符串存储或计算日期。@Simon谢谢你的两个好答案。我看了文件,觉得我现在明白了。它仍然无法100%工作。请查看我更新的问题。@themanwithballs:如果必须将日期存储为字符串,请使用
yyyy-MM-dd
格式。它可以按字母数字排序(降序或升序)。