我有一个包含以下列的数据库(附带截图)
_id = INTEGER PRIMARY KEY
guid = TEXT(图片的唯一ID)
pubDate = LONG(自纪元以来的时间)
imgsrc = BLOB(图像字节)
要求是我想保留今天下载的图像。我想删除过时的数据......即昨天的数据。
预先id = 1
与guid = 471c9744666b6f51
此图片是在 2012年12月26日星期三17:11:05 下载的,因此数据库应仅包含12月26日而不是12月25日的数据。没有必要让第一个pubdate拥有今天的日期。所以,可能首先我们需要按照描述顺序对pubdate进行db排序,然后使用第一个pubdate作为输入来删除旧数据。
任何有关如何形成SQL语句的帮助都将受到高度赞赏。
答案:结束了这样的事情..
long maxDate = 0;
Cursor cursor = getApplicationContext().getContentResolver().query(IMAGES_URI, null, null, null, PUB_DATE + " DESC ");
if (cursor != null && cursor.moveToNext()) {
maxDate = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseHelper.PUB_DATE));
cursor.close();
}
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(maxDate);
cal.add(Calendar.HOUR, -12);
int delcount = getApplicationContext().getContentResolver().delete(IMAGES_URI, PUB_DATE + " <= " + cal.getTimeInMillis(), null);
答案 0 :(得分:3)
String sql = "DELETE FROM myTable WHERE pubDate <= date('now','-1 day')";
db.execSQL(sql);
修改强>
String sql = "DELETE FROM myTable WHERE pubDate NOT IN (SELECT MAX(pubDate) FROm myTable)";
db.execSQL(sql);
编辑:最终版
DELETE FROM myTable WHERE pubDate NOT IN (SELECT pubdate FROM mytable
WHERE pubDate < datetime((SELECT MAX(pubDate) FROM myTable),'-1 days'))