2012-04-01 4 views
0

私はアンドロイドのSQLデータベースに3文字のデータを追加しました。第四の列は、データベースを構成するが、それは日付:SQLでのselectメソッドの使用

SimpleDateFormat outputDate = new SimpleDateFormat(yyyy-MM-dd) 

Date outputDate = new Date(); 

ユーザーがデータベースに情報を入力すると、データベースのための追加の方法は、データベースに追加された日付を、作成します。

私の質問は、これらのインポートされた日付を使用して、最近31日間に追加されたデータベースの行のみを作成する方法は何ですか?

SELECTメソッドは研究を通して気になりますが、実装方法はわかりません。

おかげ

答えて

0

は、限り、あなたは、Androidについて尋ねると、私はあなたが使用するデータベースはSQLiteのであることを前提としています。 SQLiteにはdateのデータ型がありません。したがって、あなたはいくつかのオプションがあります:日付を文字列で保存するか(あなたのように)、日付のタイムスタンプを保存します。

2番目のオプションを使用することをお勧めします。これは、日付を整数に変換するので、処理がさらに簡単になります。

は、このようにあなたが行うことができ、最後の31日間でイベントのみを選択したい場合:ここで私は、角括弧内のすべての値を書き込む

SQLiteDatabase database = helper.getWriteableDatabase(); 
final long millisIn31Days = 31 * 24 * 60 * 60 * 1000; 
String where = "<your-date-column> >= ?" 
String [] whereArgs = { String.valueOf(new Date().getTime() - millisIn31Days) }; 
Cursor cursor = 
    database.query("<TABLE_NAME>", null, where, whereArgs, null, null, null); 

注意はあなたが実際に正しい定数で埋める必要があります。

しかし、文字列の解決策に固執したい場合は、日付形式を正しい方法で指定する限り、文字列の比較を行うことができます。文字列ソリューションでは、31日前の日付を計算する必要があります。あなたはそれを達成するためにCalendarのクラス補助メソッドを使うことができます。データベースエンジンを仮定

+0

作成する方法の下で? –

+0

ありがとうございました!私は、入力された日付とコードが出力される日付の長い値を取得し、その後コードを比較する単純なブール減算を行う代わりに、コードを修正しました! –

1

はSQLiteのである、あなたはその

SELECT * from your_table where julianday('now') - julianday(your_date_field)<=31; 

のようなものを試してみてくださいあなたにもSQLiteの日付関数に興味がある可能性があり:すなわち:Databaseクラスでこのコードがどうあるべきhttp://www.sqlite.org/lang_datefunc.html

+0

"(your_date_field)の意味ですか? –

+0

文が作成されたときの日付を含むデータベースフィールドについて考えていました...何かが欠けていますか? – Colin

+0

いいえ、 私はこのSELECT *メソッドから離れて、他の返事の助けを借りて私はそれを克服することができました!ありがとうございました!しかし、私は自分のコードを書いています。 –

関連する問題