24

x 日より古いテーブル MYTABLE のすべての行を削除したいと考えています。列 SAVE_DATE Long は、行がテーブルに挿入された時刻です。

私はこれを試しましたが、明らかにすべての行を削除します:

long daysInMiliSec = new Date().getTime() - X
            * (24L * 60L * 60L * 1000L);
return db.delete(MYTABLE , SAVE_DATE
            " <= ?", new String[] { "" + daysInMiliSec }

なにが問題ですか?

4

4 に答える 4

47

以下のクエリは、2日より古いデータを削除します。

String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')"; 
db.execSQL(sql);
于 2012-08-02T07:07:54.073 に答える
13

これはGoogleでの最初のヒットであるため、初心者向けの説明をさらに追加
します。sqlite DBにアクセスするために使用するメインプログラムの時刻/日付関数は必要ありませんが、sqlite日付関数を直接使用します.

次の例のように、年齢の行エントリを持つテーブルを作成します。

CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, text TEXT, age INTEGER)

あなたはそれに書き込む

INSERT INTO test (text, age) VALUES ("bla", datetime('now'))

ここで「datetime」を使用したのは、後で時間/分/秒を検索できるようにするためです。その「date('now')」が必要ない場合は十分です。

日付関数の説明は次のとおりです: https://www.sqlite.org/lang_datefunc.html

たとえば 5 分より古いものをすべて選択するには、次のようにします。

SELECT * FROM test WHERE age <= datetime('now', '-5 minutes')

これらの可能性の詳細については、上記の Web サイトの「Modifiers」の段落の下で確認できます。

于 2015-01-21T02:04:51.517 に答える