2012-08-02 15 views
12

テーブルMYTABLEのx日より古い行をすべて削除します。列SAVE_DATE Longは、行が表に挿入された時刻です。x日より古いアンドロイドのsqllite行を削除する

私はこれを試してみましたが、どうやらそれは私のすべての行を削除します。間違っている

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

何?

私を助けていただきありがとうございます。クエリ以下

答えて

26

は2日より古いデータを削除します:

String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')"; 
db.execSQL(sql); 
10

それは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')) 

これはまた、あなたができるようになるので、私は「日時」を使用して、それに書き込みます後で時間/分/秒を検索します。その必要がない場合は '日付('今 ')'で十分です。ここで

は、日付関数についての説明です:https://www.sqlite.org/lang_datefunc.html

例えば5分よりも古いすべてのものを選択するには:

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

あなたは段落の下に上記のウェブサイト上でこれらの可能性の多くを見ることができます " 修飾子 '。

関連する問題