2017-07-11 1 views
2

私はSQLiteデータベース内のテーブルを持っているメッセージと呼ばれるメッセージテーブルにmessage_dateカラムが含まれています。私は7日前に挿入されたデータが必要です。どのようにアンドロイドのsqliteデータベースにタイムスタンプ(長いミリ秒)の値を比較する

Cursor cursor = db.rawQuery("SELECT csId FROM table_messages WHERE date < date('now','-7 days') ", null); 

誰もが訂正私のクエリ

答えて

0

あなたは(日付からミリ秒の値を取得することができますすることができます)getTimeを:message_dateが格納されているため、ミリ秒の長い値 私WRITENクエリがあったように、私は日付を比較することはできません。 ()またはSystem.currentTimeMillis()は、「現在の時刻と1970年1月1日の深夜との差(ミリ秒単位)」を返します。

7日前のタイムスタンプを取得します。これを試す -

Calendar current = Calendar.getInstance(); 
current.add(Calendar.DATE, -7); 
long millis = current.getTime().getTime();//Change this line 

Cursor cursor = db.rawQuery(
    "SELECT csId FROM table_messages WHERE date < " + String.valueOf(millis), null); 

EDIT:
1:あなたは、あなたが望むように減算日追加し、カレンダーオブジェクトからミリ秒を抽出し、クエリで

EDIT 2を使用することができますが、コードの2行目を参照してください。 current.add(Calendar.DATE、-7);ここで-7は、今日から7日を引いていることを意味します。 -30(30日を引く)または30(30日を加える)は、照会する表に条件に一致するレコードがないため、値を変更しようとすることを意味します。

2.テーブルからすべての行を選択してlogcatに出力し、カレンダーから取得したミリ秒を印刷し、カレンダーから取得したミリ秒を手動で一致させるかどうかを確認します。

3.この行を置き換えます。long millis = current.getTimeInMillis();長いmillis = current.getTime()。getTime();

あなたがエラーを取得している4.Ifこれはあなたの問題を解決した場合、ポストエラーメッセージ

が、その後の答えとして、このポストをマークしてください。

+0

ことができますか? @Rahul –

+0

私は編集ポストを持っています。 – Rahul

+0

をご覧ください。私の質問が分かりますか?私は7日前に挿入された挿入されたレコードを検索するクエリを探しています。 –

0

あなたが提出したクエリがデータ前7日間動作します> 6日前にタイムスタンプを照会し< 7日前

Calendar sixDaysAgo = Calendar.getInstance(); 
     sixDaysAgo.add(Calendar.DATE, -6); 
     long millis6Days = sixDaysAgo.getTimeInMillis(); 

     Calendar sevenDaysAgo = Calendar.getInstance(); 
     sevenDaysAgo.add(Calendar.DATE, -7); 
     long millis7Days = sevenDaysAgo.getTimeInMillis(); 

     Cursor cursor = db.rawQuery(
       "SELECT csId FROM table_messages WHERE date > " + String.valueOf(millis6Days) + " AND date < " + String.valueOf(millis7Days), null); 
+0

私はtable_messageというテーブルを持っています。このテーブルには4列のmsg_id、content、date、csidが含まれています。7日以上前に送信されたレコードが必要です。私はあなたに単純なデータを与えることはできませんCz私は根っからのデバイスがありません。日付coulmnはミリ秒単位の時間を含む整数列です –

+1

日付の列はタイムスタンプ形式で保存されますか?すべてを照会してログとして出力して、そのタイプを確認してから正確に比較してください。 7日以上はdate> milisecond7Daysの値を比較するだけです –

+0

yes dateカラムはtimestapm formateのように保存されます:933424234 like this: –

関連する問題