2011-12-20 6 views
0

私はここでいくつかの類似の質問を見ましたが、誰も助けていないので、私はいくつかのパーソナライズされたヘルプを得ることができると思った。現在、私はちょうどそれがすべてを削除したい、私は時間に基づいて削除するには、書いた私は、メソッドを呼び出しています時間に基づいてSQLite(Android)から行を削除する

2011-12-20 09:55:28 

:私は形である「time_added」というコラムで、私のデータベースに物事を追加しています

StringBuilder queryString = new StringBuilder("date('now') < date('"); 
queryString.append(KEY_TIME).append("')"); //.append("','+0 days')"); 
int c = mDatabase.delete(DATABASE_TABLE, queryString.toString(), null) 

だから今それが言うWHERE句出力します:今、前に

date('now') > date('time_added') 

を私はこれが今の前にあるすべてのものが削除されることを意味思ったが、多分私は間違っています。助けてくれてありがとう。

答えて

4

これを実装する際に問題が発生したことを覚えています。なぜか覚えていませんが、日付コマンドは協力していないようです。私はちょうど日付形式の文字列比較を使用しました。ここで私が使用し終わったコードがあります。それはうまくいくようです。

// Range to cleanup anything in the DB that is older than 2 days 
    // 
    // NOTE: This value must be negative so that when it gets added to the 
    // current date, it sets the range as anything older than 2 days ago 
    int rangeInDays = -2; 

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

    Calendar range = Calendar.getInstance(); 
    range.add(Calendar.DAY_OF_MONTH, rangeInDays); 

    int numDeleted = 
     mDatabase.delete(DATABASE_TABLE, "time_added" + " < '" 
        + dateFormat.format(range.getTime()) + "'", null); 
+0

恐縮です、ありがとうございます! – jakehschwartz

1

getTimeInMilliseconds()を使用して日付を整数として保存します。これは比較を容易にし、国際日付フォーマットについて心配する必要がないことを意味します。

+0

この考えは間違いありませんが、最終的には範囲を増やしたいと思っています。しかし、ありがとう! – jakehschwartz

関連する問題