我正在比较两个字符串日期然后它在同一个月工作并从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;
}
答案 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()。 这应该有希望解决问题。
希望这会有所帮助:)