从 SQLite 数据库中获取当前日期到上个月日期之间的数据
Get data between current date to last month date from SQLite database
我需要从 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;
}
我没有收到错误请帮助我并告诉我如何获取这些数据。
谢谢
一种方法是
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
中有值然后才有效。
您可以在 SQL 查询中使用此条件
日期('now','-29天')
此查询为您提供 30 天的日期范围
我需要从 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;
}
我没有收到错误请帮助我并告诉我如何获取这些数据。
谢谢
一种方法是
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
中有值然后才有效。
您可以在 SQL 查询中使用此条件 日期('now','-29天') 此查询为您提供 30 天的日期范围