【发布时间】:2022-07-08 12:24:28
【问题描述】:
如何从安卓的房间数据库中获取今天、过去或未来的日期数据?
下面是模型类,有一个 task_date 字段是我使用 Date 对象获取的。
模型类
@Entity
data class Task(
@PrimaryKey
val tid: Long?,
@ColumnInfo(name = "title") val title: String?,
@ColumnInfo(name = "task_date") val task_date: Date?,
@ColumnInfo(name = "task_hour") val task_hour: Int?,
@ColumnInfo(name = "task_minute") val task_minute: Int?,
@ColumnInfo(name = "task_cat") val task_cat: String?,
@ColumnInfo(name = "task_repeat") val task_repeat: String?,
) {
override fun toString(): String {
return "Task(tid=$tid, title=$title, task_date=$task_date, task_hour=$task_hour, task_minute=$task_minute, task_cat=$task_cat, task_repeat=$task_repeat)"
}
}
下面有查询代码
我正在传递 Date() 今天的日期来获取今天插入的数据列表
@Query("SELECT * FROM task WHERE task_date = :targetDate")
fun getUpcomingTask(targetDate: Date): List<Task>
数据插入代码在这里
val task = Task(
Utils.getUniqueId(),
bindingActivity.inputTaskTitle.text.toString(),
Date(),
selectedHour, selectedMinute,
bindingActivity.mySpinnerDropdown.text.toString(),
Constant.REPEAT.NONE
)
转换器类
class Converters {
@TypeConverter
fun fromTimestamp(value: Long?): Date? {
return value?.let { Date(it) }
}
@TypeConverter
fun dateToTimestamp(date: Date?): Long? {
return date?.time
}
}
最后一个DataBase类
@Database(entities = [Task::class], version = 1, exportSchema = false)
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {
abstract fun taskDao(): TaskDao
}
我展示了我从未使用过日期对象的代码实现 所以需要你的帮助来学习这个日期的实现此外,我也 想要检索即将到来的数据和过去的数据等数据。也请 给你宝贵的建议,以了解更多日期
.
谢谢。
【问题讨论】:
-
我会使用 Long 来表示数据库中的日期(自 UTC 纪元以来的 Millis)。更容易比较和转换为其他格式。使用三列来存储一个时间是很麻烦的。
标签: android database kotlin android-room