首页 > 解决方案 > 如何按日期对不同格式的游标或 sqlite 数据库进行排序?

问题描述

我正在尝试通过增加列表视图上的日期来对我的数据进行排序。根据用户的设置,保存的日期如下 DD.MM.YYYYMMM DD, YYYY。现在订单设置为“日期 ASC”。

Cursor cursor = getContentResolver().query(EventEntry.CONTENT_URI,
           projection, null, null, "date ASC");

因此,当我按升序排序时,26.07.2019 将显示在 31.03.2019 上方,尽管较晚。在美国格式中,排序无论如何都不起作用,例如 Apr 总是显示在任何其他月份的上方。我想支持这两种日期格式以获得更好的用户体验。

有没有办法以正确的顺序对游标或数据库中的日期进行排序?

标签: javaandroidsqliteandroid-sqlite

解决方案


这会将参数中的日期格式更改YYYYMMDDorder by

Cursor cursor = getContentResolver().query(
    EventEntry.CONTENT_URI,
    projection, null, null, 
    "substr(date, 7) || substr(date, 4, 2) || substr(date, 1, 2) ASC");

但是日期比较的问题仍然存在。
最好的办法是将日期的格式更改为YYYY-MM-DD或将日期存储为整数(epoch milis)。


推荐阅读