比较ZonedDatetime以删除SQLite中的记录?

问题描述

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

到目前为止:

  • 试图查询记录,并从记录中提取LocalDate来比较日期早于特定日期。
  • 但是,这只会创建LocalDate而不是zoneddatetime的列表,因此我可以比较遍历zoneddatetime的这些列表以删除记录。感谢帮助!

解决方法

解决问题的方式

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;
    }

}

使用数组列表[ZDTtodelete],循环并检查DB中的TIMESTAMP列,从而可以执行删除操作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...