2016-12-09 7 views
1

このニーズに対応するため、ネット上で検索しています。 月ごとに 'amout'データグループの合計を集計する必要があります。私が見つけた何月額グループとのSQLite select sum by

はこのリクエストです:

Cursor cursor = mDb.rawQuery("SELECT strftime('%m', date), SUM(amount) FROM " + DATABASE_TABLE + " GROUP BY strftime('%m', date)", null); 

が、私は、この関数から任意の月を収集することはできませんよ以来、私はネット上で見つけstrftime('%m', date);

私は私の髪のを引っ張ってることこれは私のDB内の日付フォーマットから来る可能性があり、その機能によって理解されません。

私のDB内に格納されactuel日は次のとおりです。 "木12月1日00:00:00 GMT + 00:00 2016年"

私は、戻り値をチェックするために、このカーソルを使用します。

Cursor cursor = mDb.rawQuery("SELECT distinct date, strftime('%m', date) FROM " + DATABASE_TABLE, null); 

  • cursor.getString(0)=木12月1日00:00:00 GMT + 00:00 2016
  • cursor.getStringを(カーソルに私は(カーソルの最初のチェックをチェック) 1)= null

私は正確に日付を収集します。それは動作していない変換です。

編集: 提案され説明されているように、私はそのフォーマットが機能によって誤解される可能性があると思っていました(明らかにそうです)。

これは私が私のデータベースに日付を追加する方法です:DBにそれを保存する前にdateFormat = new SimpleDateFormat("dd/MM/yyyy");

し、この行は私のお金のオブジェクトに日付を追加する:私はこれを使用 dateFormat.parse("01/12/2016")

ことができますあなたは私を助けますか?おかげさまで 私のクラスに保存されているように私は私のオブジェクトを作成していたときに私の問題は、私のデータベース項目の作成者

に位置していた、フォーマットの問題に私をリードしRotwangへ

+0

'actuel日は次のとおりです。 "木12月1日00:00:00 GMT + 00:00 2016"'その後、我々は持っていますあなたのバグの原因。 ** valid ** SQLite TimeStringとして日付を保存する必要があります。 –

+0

それは私が考えていたものですが、有効な日付を追加する方法や、有効な日付は何か、SQLiteの話しは分からずに、多くの構文解析方法を試しましたか?ありがとう。 – Alexandre

+1

、すなわち、「2016-12-09」。あなたは 'sqlite timestring'を検索し、公式ドキュメントにアクセスできます。 –

答えて

1

おかげで、私はちょうど日付を入れていた(java.utilの。日付日付)それを書かずに。

したがって、日付は常に間違った形式で保存されていました。私は作成段階でそれをフォーマットしなければなりませんでした。私のオブジェクトを作成し、私の問題を解決するためのコードを以下に示します。

dateFormat = new SimpleDateFormat("yyy-MM-dd");おかげで再びRotwang

そして:私のDB内に格納され

public void createMoney(Money money) { 
     ContentValues values = new ContentValues(); 

     values.put(TITLE, money.get_title()); 
     values.put(AMOUNT, money.get_amount()); 
     values.put(DETAILS, money.get_details()); 
     values.put(DATE, dateFormat.format(money.get_date())); 
     values.put(TYPE_FK_ID, money.get_typeFkId()); 
     values.put(CONTACT_FK_ID, money.get_contactFkId()); 
     values.put(REMINDER_FK_ID, money.get_reminderFkId()); 

     mDb.insert(DATABASE_TABLE, null, values); 
    }