我在Android项目中有一个SQLite数据库,其中Date列以 dd-mm-yyyy HH-mm-ss 格式将日期时间存储为String。我需要根据日期的降序对其进行排序。 或者,将其转换为标准的 yyyy-MM-dd HH-mm-ss 格式,然后对其进行排序。
一般的ORDER BY DATETIME(coulmn_name)不起作用。
注意:
这不是一个重复的问题,其他答案建议更改数据库架构(这是不可能的,因为我已经存储了数据)
答案 0 :(得分:2)
我想建议你采取的另一种方法。我个人遇到了同样的问题,并且根本没有使用字符串日期来解决它。
相反,我将日期转换为纪元毫秒,即unix时间戳并保存。然后排序是时间戳的简单顺序。
您可以使用以下方法:
SimpleDateFormat sdf = new SimpleDateFormat ("dd-MM-yyyy HH:mm:ss");
Date currentDate = sdf.parse(yourdatestring);
//Get the calendar in the time zone you need, generally it works off the bat with the default time zone
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("yourtz"));
cal.setTime(currentDate);
//Get the milliseconds since epoch time
long millis = cal.getTimeInMillis();
您可以保存此时间戳并轻松对其进行排序。它比字符串更准确,更易于使用,并且可能使您能够处理不同的时区。
您可以直接在日历中设置此时间戳并从中获取日期来检索日期
cal.setTimeInMillis(timestamp).getTime();
希望这有帮助