SQLite查询:SQLite查询删除数据,以便只在db中退出当前日期数据

时间:2012-12-26 12:26:49

标签: android sql sqlite android-sqlite

database schema

我有一个包含以下列的数据库(附带截图)

  

_id = INTEGER PRIMARY KEY

     

guid = TEXT(图片的唯一ID)

     

pubDate = LONG(自纪元以来的时间)

     

imgsrc = BLOB(图像字节)

要求是我想保留今天下载的图像。我想删除过时的数据......即昨天的数据。

预先id = 1guid = 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);

1 个答案:

答案 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'))