2016-04-28 12 views
1

私はdueDatesの列を含むタスクのテーブルを持つSQLiteデータベースを持っています。私は明日の日付の後にある日付を除外したいと思います。明日以降の行数を取得する方法は?

明日の日付が4月29日の場合、明日の後の日付を取得する必要があります。私は明日の後の仕事の数を取得したい。

このため、私は文字列を日付に変換しました。形式は次のとおりです。

Calendar calendar = Calendar.getInstance(); 

dateToday = calendar.getTime(); 
SimpleDateFormat df = new SimpleDateFormat("d MMM yyyy"); 
dueDateToday = df.format(dateToday); 

calendar.add(Calendar.DAY_OF_YEAR, 1); 
dueTomorrow = calendar.getTime(); 

dueDateTomorrow = df.format(dueTomorrow); 

とクエリは次のとおりです。

public int getPendingTasksLaterDays(String tomorrow) { 
    ArrayList<Task> conList = new ArrayList<Task>(); 


    String selectQuery = "SELECT * FROM " + TASK_TABLE + " WHERE " + KEY_TASK_STATUS + " = 1" + " AND " + KEY_DUE_DATE + " > '" + tomorrow + "'" ; 


    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor mCount= db.rawQuery(selectQuery,null); 

    if (mCount.moveToFirst()) { 
     do { 

      count = mCount.getInt(0); 
     } while (mCount.moveToNext()); 
    } 

    Log.d("query",selectQuery); 

    Log.d("count",String.valueOf(count)); 
    mCount.close(); 

    return count; 
} 

しかし、クエリが私のために働いていません。私が得た数は0です。 私は間違って何をしていますか?

+0

のSQLiteを必要とせずgetCount方法でカーソルからの結果の数を得ることができることも言及する価値があります。 [SQLiteドキュメント](https://www.sqlite.org/lang_datefunc.html)のTime Stringsセクションを参照してください –

答えて

0

変更は、この

String selectQuery = "SELECT count(*) FROM " + TASK_TABLE + " WHERE " + KEY_TASK_STATUS + " = 1" + " AND " + 
     KEY_DUE_DATE + " > '" + tomorrow + "'" ; 
+0

変更点は何ですか? @ Nazmul Hasan Masum –

+0

はい使用カウント機能。私はこれを試しましたが、何のカウントも返されませんでした。日付が比較されないことがありますか?この日付を比較する方法は? @Nazmul Hasan Masum –

1

あなたのクエリのようなクエリは、明後日のすべてを見つけるために、SQLiteのでdate機能を使用することができますが、それはあなたが正しく、少なくとも形式YYYY-MM-DDであなたの期日列を格納している前提としています。 (他の形式もリンクにあります)。

SELECT COUNT(*) FROM tasks WHERE due_date > date('now', '+1 day'); 

データベースに日付を正しく保存しないと、結果が0になる可能性が非常に高いです。

それはあなたがたDateFormatとして `D MMMのyyyy`を使用していないCOUNT(*)

int count = db.rawQuery(selectQuery,null).getCount();