1

问题: 我在 SQLITE DB 中有一个列,其中存储ZonedDateTime. ZonedDateTime我需要使用此时间戳列删除早于特定日期的记录。

到目前为止完成:

  • 试图查询记录并从中提取LocalDate以比较日期是否早于特定日期。
  • 但是,这只会创建一个LocalDatenot列表,ZonedDateTime以便我可以比较这些循环ZonedDateTime以删除记录。感谢帮助!
4

1 回答 1

3

解决了这个问题

public ArrayList<String> CompareZDT(String st) {

    ArrayList<String> ZDTtodelete;
    ArrayList<String> ZDTrejected;
    ZDTtodelete = new ArrayList<String>();
    ZDTtoavoid = new ArrayList<String>();

    LocalDate todaysDate = LocalDate.now(ZoneId.of("Asia/Riyadh"));
    LocalDate checkDate = todaysDate.minusDays(120);

    String selectQuery = "SELECT * FROM " + Tablename + ";";

    SQLiteDatabase database = dbHelper.getWritableDatabase();
    Cursor cursor = database.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {

            if(ZonedDateTime.parse(cursor.getString(5)).toLocalDate().isBefore(checkDate)) {
                ZDTtodelete.add(cursor.getString(7));
            }else
            {
                ZDTrejected.add(cursor.getString(7));
            }

        } while (cursor.moveToNext());
    }
    cursor.close();

    if (st.equals("DELETE"))
    {
        return ZDTtodelete;
    }else
    {
        return ZDTrejected;
    }

}

使用 arraylist [ZDTtodelete],循环并检查 DB 中的 TIMESTAMP 列,从而可以完成删除操作。

于 2020-08-30T08:43:54.467 回答