Android 如何发送日期作为参数从数据库中获取记录

Android 如何发送日期作为参数从数据库中获取记录,android,Android,我想从数据库中获取过去1周的记录。我将当前日期和7天前的日期发送给数据库处理程序,但返回错误: The method `getALLCompJobs(String, String)` in the type `DatabaseHandler` is not applicable for the `arguments (Date, Date)` 下面是我的代码。请帮我弄清楚如何从数据库中获取过去一周的记录 public class JobSchema extends Ba

我想从数据库中获取过去1周的记录。我将当前日期和7天前的日期发送给数据库处理程序,但返回错误:

The method `getALLCompJobs(String, String)` in the type `DatabaseHandler` is not applicable for 
the `arguments (Date, Date)`
下面是我的代码。请帮我弄清楚如何从数据库中获取过去一周的记录

           public class JobSchema extends BackBaseActivity {

            Date dateBefore7day;
        Date CurrentDate;


         @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.jobsschema);
             Calendar c = Calendar.getInstance();

             SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy   HH:mm");
        df.format(c.getTime());
       CurrentDate=c.getTime();
               c.add(Calendar.DAY_OF_MONTH, -7);

              dateBefore7day=  c.getTime();



                    DatabaseHandler db = new DatabaseHandler(JobSchema.this);
            jobarr = db.getALLCompJobs(CurrentDate,dateBefore7day);


         <---error show  The method getALLCompJobs(String, String) in the type 
       DatabaseHandler is not applicable for the arguments (Date, Date) --?


        public class DatabaseHandler extends SQLiteOpenHelper {

              String CREATE_COMPLETED_TABLE = "CREATE TABLE " + TABLE_COMPLETED_JOBS
            + "(" + KEY_COMPID + " INTEGER PRIMARY KEY," + KEY_TIMEJOB
            + " TEXT," + KEY_TIMEWEEK+ " DATE,"    + KEY_PICK + " 
                          TEXT," + KEY_DEST + " TEXT,"
            + KEY_FARE + " TEXT" + ")";


                  public List<JobSchmeModel> getALLCompJobs(String CurrentDate, String 
          dateBefore7day) {
//public List<JobSchmeModel> getALLCompJobs() {
    List<JobSchmeModel> compjobsList = new ArrayList<JobSchmeModel>();

        String selectQuery = "SELECT  * FROM " + TABLE_COMPLETED_JOBS + " WHERE "  
      + KEY_TIMEWEEK + ">=" + dateBefore7day + " AND " + KEY_TIMEJOB + "<=" + 
       CurrentDate + " ORDER BY "+KEY_COMPID+" DESC";
            SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

如果您的语言支持,您可以使用一种称为epochtime的日期形式,即自1970年1月1日起的秒数。在这种形式下,从日期中加上或减去秒的简单算法非常有效。

好吧,请阅读错误:它告诉您将错误类型的参数传递给getALLCompJobs方法。它接受字符串参数,您传递的是日历类型。试试这个

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy   HH:mm");
String sCurrent = df.format(c.getTime());
c.add(Calendar.DAY_OF_MONTH, -7);
String sWeekBefore = df.format(c.getTime());
jobarr = db.getALLCompJobs(sCurrent, sWeekBefore);
UPD 日期字符串的格式看起来不正确


检查如何将java.util.Date转换为java.sql.Date,并且不要忘记调用.toString来处理传递给db.getALLCompJobs的日期对象…

您需要在getALLCompJobs中以字符串形式传递日期…以及我将如何从数据库中恢复???如果我以字符串形式传递日期,它将从数据库中获取记录??是的,但如果您还记得的话,请确保您的日期字段的数据类型为DATETIME,正如我上次告诉您的那样。但在我的数据库中,我只使用date来保存数据库中的日期检查+键+时间周+日期,勾选这个你的意思是把这个改成DateTime我想你知道你的sql。您使用的sql查询是否没有提供所需的条目?我不是SQL专家,但我认为这是格式字符串的问题。看看这个答案,了解如何生成SQL就绪日期对象。