字符串日期格式不适用于两个不同的月份

时间:2013-09-25 06:04:10

标签: android

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

日期格式为“25 sep 2013” 它是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;
}

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

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

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

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

希望这会有所帮助:)