0

我正在比较两个字符串日期,然后它在同一个月工作并从 sqlite 数据库返回记录,但对于不同的月份它不起作用并返回记录。我的意思是它在两个不同的月份都不起作用。请建议我做什么。

日期格式是“2013 年 9 月 25 日”,它是 sep 的返回记录,但不是 oct 或其他不同月份的返回记录。

谢谢

我的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

尝试这种方式可能会有所帮助

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 回答
0

我正在查看您的数据库代码,我注意到您正在查询日期小于提供的“最大日期”的所有行。不确定您给出的 9 月 / 10 月示例是否真实,但如果是,则 10 月日期不应该返回,因为 10 月在 9 月之后。

无论如何,我建议将 db 代码中的比较调整为如下所示:

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

注意那里的 date() 解析。这应该有望解决问题。

希望这可以帮助 :)

于 2013-09-25T06:25:10.007 回答