0

私は2つの文字列の日付を比較していますが、同じ月に機能し、sqliteデータベースからレコードを返しますが、別の月には機能せず、レコードを返します。つまり、2つの異なる月に機能していません。私が何をしているのか教えてください。

日付形式は「2013 年 9 月 25 日」です。これは 9 月のレコードを返しますが、10 月やその他の月のレコードではありません。

ありがとう

私のJavaコードは

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, 7);
SimpleDateFormat    dfDate_day = new SimpleDateFormat("dd MMM yyyy");
Date resultdate = new Date(cal.getTimeInMillis());
String maxdate = dfDate_day.format(resultdate);
Cursor c4 = db_category.selecttaskdate1(maxdate);
count = c4.getCount();
c4.close();

私のデータベースコードは

public Cursor selecttaskdate1(String maxdate)

{
SQLiteDatabase db12= this.getReadableDatabase();

String[] columns = { main_Tasknewid, main_Taskname, main_Taskid, Task_Catid,    main_Taskdate, main_TaskCreatorUrl, main_Taskcreatorname, main_Taskreadunread,  main_Taskregno, main_Taskattachment, main_Taskattachmentname,  Email_id,star_status,Checked_status };

Cursor c = db12.query(main_Task, columns,
main_Taskdate+"<=?",new String[]{maxdate}, null, null, null);



if ((c.getCount() == 0) || !c.moveToFirst()) {
//throw new SQLException("No items found");
}       
return c;
}
4

2 に答える 2

0

あなたの DB コードを見ていると、提供された「最大日付」よりも日付が小さいすべての行を照会していることに気付きました。あなたが与えた9月/ 10月の例が本物かどうかはわかりませんが、もしそうなら、10月は9月以降であるため、とにかく10月の日付は返されるべきではありません.

いずれにせよ、db コードの比較を次のように調整することをお勧めします。

Cursor c = db12.query(main_Task, columns, main_Taskdate+"<=date(?)",new String[]{maxdate}, null, null, null);

そこでの date() の解析に注意してください。これで問題が解決するはずです。

お役に立てれば :)

于 2013-09-25T06:25:10.007 に答える
0

この方法を試してみてください

Calendar cal = Calendar.getInstance();

        cal.add(Calendar.DATE, 7);
        SimpleDateFormat    dfDate_day = new SimpleDateFormat("dd MMM yyyy");
        String maxdate = dfDate_day.format(cal.getTime()); // UPDATE HERE
        Cursor c4 = db_category.selecttaskdate1(maxdate);
        count = c4.getCount();
        c4.close();
于 2013-09-25T06:18:49.330 に答える