从SQLite数据库获取当前日期与上个月日期之间的数据

时间:2015-05-08 11:47:36

标签: android date android-sqlite

我需要从SQlite获取当前日期到上个月(意味着最近30天)之间的数据。 这是获取所有数据列表的代码,但我从中得不到任何结果。

public List<Birthday> getWeekBirthdays() {

    List<Birthday> birthdays = new ArrayList<Birthday>();
    SQLiteDatabase db = this.getReadableDatabase();
    Calendar theEnd = Calendar.getInstance();
    Calendar theStart = (Calendar) theEnd.clone();
    theStart.add(Calendar.DAY_OF_MONTH, -30);

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String start = dateFormat.format(theStart.getTime());
    String end = dateFormat.format(theEnd.getTime());

    String dateQuery = "SELECT * FROM " + TABLE_Birthday + " WHERE "
            + KEY_Event_Date + " BETWEEN " + start + " AND " + end;
    Log.e(LOG, dateQuery);
    Cursor c = db.rawQuery(dateQuery, null);
    Log.e(LOG, "no of birthday : " + c.getCount());
    if (c.moveToFirst()) {
        do {
            Birthday birthday = new Birthday();
            birthday.setName(c.getString(c.getColumnIndex(KEY_User_Name)));
            birthday.setEventType(c.getString(c
                    .getColumnIndex(KEY_Event_Type)));
            birthday.setEventDate(c.getString(c
                    .getColumnIndex(KEY_Event_Date)));
            birthday.setId(c.getInt(c.getColumnIndex(KEY_ID)));
            birthdays.add(birthday);
        } while (c.moveToNext());
    }
    return birthdays;
}

我没有收到错误,请帮助我并告诉我如何获取这些数据。

由于

2 个答案:

答案 0 :(得分:3)

一种方法是

String query="SELECT * from "+TABLE_Birthday +" WHERE "+ KEY_Event_Date +" >= date('now','localtime', '-30 day')"; 

Cursor c = myDataBase.rawQuery(query,null);

它将从今天开始提取最后30 days条记录。但是您的KEY_Event_Date必须包含yyyy-MM-dd中的值,然后才有效。

答案 1 :(得分:0)

您可以在SQL查询中使用此条件 日期(&#39;现在&#39;,&#39; -29天&#39;) 此查询为您提供30天的日期范围