Получить данные за текущую неделю и месяц в базе данных комнат

Я пытаюсь получить данные за текущую неделю и месяц в комнате. Я создал текущий запрос дня, и он работает, но другие не работают.

Дневной запрос (этот работает):

 @Query("SELECT * FROM expense_table WHERE day = strftime('%d', 'now')")
LiveData<List<Expense>> getExpensesDay();

Неделю:

@Query("SELECT * FROM expense_table WHERE week = strftime('%W', 'now')")
LiveData<List<Expense>> getExpensesWeek();

Месяц:

@Query("SELECT * FROM expense_table WHERE month = strftime('%m', 'now')")
LiveData<List<Expense>> getExpensesMonth();

Сущность:

@Entity(tableName = "expense_table")
public class Expense  {

@PrimaryKey(autoGenerate = true)
private int expenseId;
private String note;
private Double value;
private String type;
private Long dateLong = System.currentTimeMillis();
private String date = new SimpleDateFormat("MM/yyyy").format(new Date(dateLong));
private static Calendar cal = Calendar.getInstance();
private int month = cal.get(Calendar.MONTH);
private int week = cal.get(Calendar.WEEK_OF_YEAR);
private int day = cal.get(Calendar.DAY_OF_MONTH);
private int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
private String weekDay = new DateFormatSymbols().getWeekdays()[dayOfWeek];
0
0
656
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно документам, strftime('%W', ...) заменяет неделю года на 0, а Calendar.get(Calendar.WEEK_OF_YEAR) возвращает неделю года на 1. Точно так же strftime('%m', ...) заменяет неделю года на 1, а Calendar.get(Calendar.MONTH) возвращает неделю года на 0.

Итак, попробуйте заменить вычисление полей в вашем классе Entity:

private int month = cal.get(Calendar.MONTH) + 1;
private int week = cal.get(Calendar.WEEK_OF_YEAR) - 1;

вместо

private int month = cal.get(Calendar.MONTH);
private int week = cal.get(Calendar.WEEK_OF_YEAR);

Так странно, но когда я попробовал в первый раз, не получилось, теперь работает. Может быть, я что-то не так в моем запросе? Я не знаю. Спасибо за помощь. Теперь все работает.

beginner992 08.04.2019 17:12

Другие вопросы по теме