Я храню свои даты в базе данных в виде строк. Это нормально работало при использовании MySQL, однако, используя комнату в android, я не могу выполнять поиск по дате до и дате от в моих запросах правильно, поскольку комната не распознает строковые даты. Мне интересно, можно ли использовать преобразователь типов, чтобы просто преобразовать строку в длинную. Вместо того, чтобы переделывать всю мою базу данных для хранения даты вместо строки, а затем конвертировать из Date в long.
Любая помощь с этим будет принята с благодарностью. 1006 *
@TypeConverter
public static Date fromTimestamp(String value) {
if (value != null) {
try {
return df.parse(value);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
} else {
return null;
}
ЗАПРОС
// Get Monthly Logs
@Query("SELECT checkInTable.checkInId, checkInTable.moodBeforeId, " +
"checkInTable.checkInEntry, checkInTable.checkInEntry2, " +
"checkInTable.userId, moodBeforeTable.workoutDate,
moodBeforeTable.moodBefore, " +
"moodBeforeTable.moodBeforePK " +
"FROM checkInTable " +
"JOIN moodBeforeTable " +
"ON checkInTable.moodBeforePK = moodBeforeTable.moodBeforePK " +
"WHERE moodBeforetable.workoutDate >= datetime('now', '-1 month') " +
"ORDER BY moodBeforeTable.workoutDate DESC")
LiveData<List<CheckInLogsPojo>> getCheckInLogsMonthly();
МОДЕЛЬ
@NonNull
@ColumnInfo(name = "workoutDate")
@TypeConverters({TimeTypeConverter.class})
private String workoutDate;
ОБНОВЛЕНИЕ: с указанным выше преобразователем типов и запросом он по-прежнему не сортирует результаты в течение 1 месяца. Он просто показывает все.