这是我正在使用的查询我希望排序结果如11 / 2017,12 / 2017,3 / 2018 5/2018
如果它不能在查询中完成,那么如果我可以在android java arraylist中做,如果可能请帮助
答案 0 :(得分:0)
试试这个,
SELECT distinct monthyear FROM notes ORDER BY date(monthyear) DESC
注意:在这里,您希望按日期排序,因此您需要使用日期()。如果您想要日期和时间,则需要使用 datetime()
答案 1 :(得分:0)
在Java中,您可以使用:
SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare( String d1, String d2) {
if(d1.equals(d2)) return 0;
try {
Date date = sdf.parse(d1);
Date date2 = sdf.parse(d2);
return date.before(date2)? -1:1;
}catch (ParseException exception){
Log.e("Date compare ->", exception.getMessage(), exception);
return 0;
}
}
});
如果你使用lambda,你可以使用更短的版本:
SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
Collections.sort(list, (Comparator<String>) (d1, d2) -> {
if(d1.equals(d2)) return 0;
try {
Date date = sdf.parse(d1);
Date date2 = sdf.parse(d2);
return date.before(date2)? -1:1;
}catch (ParseException exception){
Log.e("Date compare ->", exception.getMessage(), exception);
return 0;
}
});
Android API级别24允许您使用list.sort方法:
SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy");
list.sort((Comparator<String>) (d1, d2) -> {
if(d1.equals(d2)) return 0;
try {
Date date = sdf.parse(d1);
Date date2 = sdf.parse(d2);
return date.before(date2)? -1:1;
}catch (ParseException exception){
Log.e("Date compare ->", exception.getMessage(), exception);
return 0;
}
});