次の列を持つデータベースがあります(スクリーンショットが添付されています)
_id = 整数の主キー
guid = TEXT(画像の一意の ID)
pubDate= LONG(エポックからの時間)
imgsrc = BLOB(画像バイト)
要件は、今日ダウンロードした画像のみを保持することです。古いデータ、つまり昨日のデータを削除したい。
例えばid = 1
、guid = 471c9744666b6f51
この画像は2012 年 12 月 26 日水曜日 17:11:05にダウンロードされたので、データベースには 12 月 25 日ではなく 12 月 26 日のデータのみが含まれている必要があります。最初の発行日が今日の日付である必要はありません。したがって、おそらく最初に pubdate で降順でデータベースをソートし、最初の 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);