java - 基于日期和星期的SQL查询

标签 java android sqlite

我正在尝试从我的数据库中检索过去一周的值。现在我正在运行查询以检索当前时间和当前时间 - 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;
}

最佳答案

下定决心。您想要“过去一周”的数据,还是只想要这一周的数据(从周日开始)。

无论如何,这是用于识别最近星期日日期的通用 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());

关于java - 基于日期和星期的SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383424/

相关文章:

java - JSR 310::System.currentTimeMillis() 与 Instant.toEpochMilli()::TimeZone

Java 桌面应用程序无法在 C 上写入文件 :\drive

java - 如何从 ACTION_GET_CONTENT Intent 获取的 URI 中获取文件名?

Android,如何在底部导航 View 中使用协调器布局

android - 在 onCreate() 函数中添加行

ios - 在 iOS App 中将 SQLite 数据库从 Titanium 迁移到 Ionic

java - 关于 Java Web Start 的问题

java - NullPointerException,集合不存储数据?

Android:更新 ParseUsers 的字段

android - 服务中的数据库调用