0

データベース スキーマ

次の列を持つデータベースがあります(スクリーンショットが添付されています)

_id = 整数の主キー

guid = TEXT(画像の一意の ID)

pubDate= LONG(エポックからの時間)

imgsrc = BLOB(画像バイト)

要件は、今日ダウンロードした画像のみを保持することです。古いデータ、つまり昨日のデータを削除したい。

例えばid = 1guid = 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);
4

1 に答える 1