问题描述
问题:
我在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列,从而可以执行删除操作。