Room Sqlite Query для возврата unix отметки времени от даты, сохраненной как строка - PullRequest
0 голосов
/ 06 марта 2020

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

См. Фрагменты кода ниже

TABLE CLASS

@Entity(tableName = "moodBeforeTable")
public class MoodBeforeTable {

@PrimaryKey(autoGenerate = true)
private long moodBeforePK;

@NonNull
@ColumnInfo(name = "userId")
private int userId;

@NonNull
@ColumnInfo(name = "moodBefore")
private int moodBefore;

@NonNull
@ColumnInfo(name = "workoutDate")
private String workoutDate;

@ColumnInfo(name = "cbtId")
private long cbtId;

POJO CLASS, используемый для JOINS

public class MoodStatsLineGraphModel {

private long day, dayAfter;
private int moodBefore;
private long userId;
private long cbtId;
private int moodAfter;
private String workoutDate;

**Constructors getters/setters not shown to save space**
}

DAO с запросом

@Dao
public interface MoodStatsLineGraphDao {

@Query("SELECT strftime ('%s',moodBeforeTable.workoutDate)AS 'day', strftime ('%s',moodAfterTable.workoutDate) AS 'dayAfter', moodBeforeTable.moodBefore, moodBeforeTable.userId, moodBeforeTable.workoutDate, moodBeforeTable.cbtId, moodAfterTable.moodAfter, moodAfterTable.workoutDate " +
        "FROM moodBeforeTable " +
        "LEFT JOIN moodAfterTable ON moodBeforeTable.cbtId = moodAfterTable.cbtId " +
        "WHERE DATE(moodBeforeTable.workoutDate) >= datetime('now', '-1 month') " +
        //"AND moodBeforeTable.userId = '$getId' " +
        "OR moodBeforeTable.cbtId = NULL " +
        "ORDER BY moodBeforeTable.workoutDate ASC")
LiveData<List<MoodStatsLineGraphModel>> getMoodStatsMonthly();

1 Ответ

0 голосов
/ 07 марта 2020

Вам нужен конвертер типов. из документов https://developer.android.com/training/data-storage/room/referencing-data#java:

public class Converters {
    @TypeConverter
    public static Date fromTimestamp(Long value) {
        return value == null ? null : new Date(value);
    }

    @TypeConverter
    public static Long dateToTimestamp(Date date) {
        return date == null ? null : date.getTime();
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...