データベースでは、日付を Year、Month、Day_of_Month の 3 つの列の形式で保存しました (日付を保存するのが最善の方法ではないことはわかっていますが、この形式が適していると思われる他の特定のクエリを作成します)。
ここで、日付が指定された 2 つの日付の間にあるすべての行を取得したいと考えています。以前のスタックオーバーフローの質問を確認しましたが、ほとんどの質問は日付を単一のエンティティとして保存しています。
これが私が試した方法です:
すべての列名が宣言された MySqLiteHelper クラスがあります。そこにテーブルも作ります。COLUMN_DATE_YEAR、COLUMN_DATE_MONTH、および COLUMN_DATE_DAY は、列名を格納する文字列です。
int fyear, fmonth, fday; // I populate those initial date values
int tyear, tmonth, tday; // I populate those target date values
String selection = MySQLiteHelper.COLUMN_DATE_YEAR + " >= '"+fyear+"' AND "+ MySQLiteHelper.COLUMN_DATE_DAY + " >= '"+fday+"' AND "
+ MySQLiteHelper.COLUMN_DATE_MONTH + " >= '"+fmonth+"' AND " + MySQLiteHelper.COLUMN_DATE_YEAR + " <= '"+tyear+"' AND "
+ MySQLiteHelper.COLUMN_DATE_DAY + " <= '"+ tday+"' AND "+ MySQLiteHelper.COLUMN_DATE_MONTH + " <= '"+tmonth+"'";
String []column = {MySQLiteHelper.COLUMN_MOOD_LEVEL};
Cursor cursor = database.query(MySQLiteHelper.TABLE_NAMES, column, selection, null, null, null, null);
このアプローチの問題点は、2013 年 2 月 25 日から 2013 年 3 月 17 日までのクエリに対して、月が 2 < 3 であっても、25 日 > 17 日の結果が得られないことです。これには、何らかのネストされた where 句が必要になる場合があります。ただし、「.query」メソッドを使用してネストされた「Where」を形成できません。
これら 2 つの日付の間に格納されたエントリを照会する方法を提案してください。前もって感謝します。