我正在尝试从过去一周的数据库中检索值。现在我正在运行一个查询来检索当前时间和当前时间之间的值 - 7天。我希望在过去1周的条形图中显示数据。所以通过这种方式,我的算法可行。但是如果我想在星期一查看数据,那么SQL查询将返回整个上周的值(因为它确实是今天 - 7天),所以上周的值也会弹出图表。但是我只是想从周日开始查看值。就像,如果我在星期三打开应用程序,它应该显示自星期日以来的情节,而不是自上周三以来。我正在寻找一个SQL查询,它从周日开始每周检索数据。或者java有一个函数,我可以根据日期(例如每个星期六)触发来清除我的数据库中的所有数据,因为我的代码将起作用。
这是我现在的代码:
public Cursor getStepsWeek(long time_week) throws ParseException{
String time_past = String.valueOf(new SimpleDateFormat("dd-MM-yyyy ", Locale.getDefault()).format(time_week));
int ex = Integer.parseInt(time_past.split("-")[0]) - 7;
String extract = String.valueOf(ex+"-") + String.valueOf(new SimpleDateFormat("MM-yyyy HH:mm", Locale.getDefault()).format(time_week));
Date date = new SimpleDateFormat("dd-MM-yyyy HH:mm", Locale.getDefault()).parse(extract);
Log.d("time past",date.getTime()+"");
SQLiteDatabase liteDatabase = this.getReadableDatabase();
Cursor cursor = liteDatabase.rawQuery("select * from steps_table where time_steps between " + String.valueOf(date.getTime()) + " and " + (time_week), null);
return cursor;
}
答案 0 :(得分:1)
下定决心。你想要数据"过去一周",或者你想要这个周的数据(从星期日开始)。
无论如何,这里是用于识别最近星期日的日期的通用Java代码,如果今天是星期日,则返回今天。
// Get "now"
Calendar cal = Calendar.getInstance();
// Update to most recent "first day of week", e.g. SUNDAY in the U.S., MONDAY in France
int firstDayOfWeek = cal.getFirstDayOfWeek();
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek < firstDayOfWeek)
dayOfWeek += 7;
cal.add(Calendar.DAY_OF_MONTH, firstDayOfWeek - dayOfWeek);
// Remove time fields
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
cal.clear();
cal.set(year, month, day);
// Get a Timestamp for use with PreparedStatement
Timestamp startDate = new Timestamp(cal.getTimeInMillis());
要获得一年中的第一天,请使用:
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
cal.clear();
cal.set(year, Calendar.JANUARY, 1);
Timestamp startDate = new Timestamp(cal.getTimeInMillis());