Использование ROOM Dao - Как я могу получить данные таблицы, сравнивая текущую дату с датой, хранящейся в таблице? - PullRequest
0 голосов
/ 25 октября 2019

Я работаю над действием, в котором есть 6 переключателей (1-Все, 2-Сегодня, 3-Вчера, 4-Последняя неделя, 5-Этот месяц, 6-Последний месяц) <= Этоназвания радиокнопок. Поэтому, когда я проверяю переключатель «Сегодня» и нажимаю кнопку «ОК», он должен показать мне все записи, которые вставлены в базу данных на сегодняшнюю дату, а сброс переключателей должен дать мне результат, поскольку имена там есть, как будто я проверяю «Вчера»,он должен дать мне данные, которые были сохранены вчера. </p>

Проблема в том, что я не знаю точных запросов для этого сценария, который даст мне нужные данные.

Я использую ROOMбазе данных и в классе Дао я должен написать запросы, которые будут давать мне данные в соответствии с переключателями.

Существует столбец Дата и Время, в котором хранятся текущие дата и время, когда данные хранятся в этой таблице, поэтому я должен сопоставить дату таблицы с датой Сегодня, Вчера и т. д., и в соответствии с этим сопоставлением данные будут фильтроваться.

Это мой класс сущностей (Таблица), откуда я хочучтобы получить данные в соответствии с датой.

@Entity
public class IncomeExpense  {
   @PrimaryKey(autoGenerate = true)
   private int id =0;

   private String type;
   private int amount;
   private String category;
   private String date;
   private String time;
   private String mode;
   private String note;

Я просто хочу кого-то, кто может написать мне Дао-запросы и функции, которые дадут мне фильтр данныхв соответствии с переключателями.

1 Ответ

1 голос
/ 25 октября 2019

Я добился этого, используя даты в строковом формате. Как и в стандартном формате дат 08-12-2015. В классе Дао я использовал следующий запрос, чтобы получить запись для даты. обратите внимание, что в моем классе сущности дата также была в формате String.

@Query("SELECT * from scan_data where sqlDate = date('now') ")
List<Data> getTodayRecord();

для записи YesterDay

@Query("SELECT * from scan_data where sqlDate = date('now','-1 day')")
 List<Data> getYesterDayRecord();

для записи на прошлой неделе

@Query("SELECT * FROM scan_data WHERE DATE(sqlDate) >= DATE('now', 'weekday 0', '-7 days')  AND DATE(sqlDate) != DATE('now')  AND DATE(sqlDate) != DATE('now','-1 day')")
List<Data> getLastWeekRecord();

для записи за месяц

@Query("SELECT * FROM scan_data WHERE strftime('%W',sqlDate) != strftime('%W',date('now')) AND strftime('%Y',sqlDate) = strftime('%Y',date('now')) AND  strftime('%m',sqlDate) = strftime('%m',date('now')) AND DATE(sqlDate) != DATE('now', 'weekday 0', '-7 days')  AND DATE(sqlDate) != DATE('now')  AND DATE(sqlDate) != DATE('now','-1 day')")
List<Data> getLastMonthRecord();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...