Я новичок в разработке под Android и застрял с довольно простой проблемой (наверное;)).
Я пытаюсь получить записи из SQLite (используя Room) за последние 30 дней.
Это мой запрос, который не работает - он не возвращает никаких записей (из класса @Dao):
// getting fares for one day (custom-made query)
@Query("SELECT * FROM fare WHERE createdDateDb >=datetime('now', 'now', '-30 day')")
public List<Fare> getFaresOneDay();
Однако этот простой запрос, который извлекает все записи без указанных дат, работает:
// getting all fare (via custom-made query)
@Query("SELECT * FROM fare ORDER BY createdDateDb DESC")
public List<Fare> getAllFares();
Это мой класс DateTypeConverter:
public class DateTypeConverter {
@TypeConverter
public long convertDateToLong(Date date) {
return date.getTime();
}
@TypeConverter
public Date convertLongToDate(long time) {
return new Date(time);
}
}
Это то, как значение присваивается createDateDb (до его вставки в БД):
fare.setCreatedDateDb(new Date());
Это мой класс "Entity":
@Entity(tableName = "fare")
public class Fare {
private String fareValue;
private String typeOfJob;
@PrimaryKey(autoGenerate = true) @NonNull
private Integer jobId;
// dates used for user display
private String createdDate;
private String createdTime;
// date var used for comparisons - not to be displayed for the user
private Date createdDateDb;
}
, а также установщик и получатель для созданного DateDb
// #6 createdDateDb getter
public Date getCreatedDateDb() {
return createdDateDb;
}
// #6 createdDateDb setter
public void setCreatedDateDb(Date createdDateDb) {this.createdDateDb = createdDateDb; }
Я был бы очень признателен за подсказки, как к нему приблизиться, потому что мне кажется, что я ничего не получаю.
Я также попробовал следующее:
SELECT *
FROM fare
WHERE createdDateDb BETWEEN datetime('now', 'start of month') AND datetime('now', 'localtime')
К сожалению, это тоже не сработало.
Спасибо!