我不知道如何从Room数据库获取当前月份的数据
我尝试了一下,但是没有用,数据一直显示另一个月
@Query("SELECT * FROM transaksi WHERE strftime('%m', tanggal) = :tgl")
fun getData(tgl : String): List<Transaksi>
因此tanggal
变量是Date
类型。我正在使用TypeConverters,日期的格式重要吗?因为我将日期的格式设置为“ dd-MM-yyyy”。
答案 0 :(得分:0)
我认为返回类型不应该是表本身,而应具体说明返回类型:
尝试:
@Query("SELECT * FROM transaksi WHERE strftime = :tgl")
fun getData(tgl : String): List<String>
答案 1 :(得分:0)
如果您使用Int
保存Date
,请尝试以下方法:
@Query("SELECT * FROM transaksi WHERE datetime(tanggal/1000,'unixepoch','start of month') = datetime(:dateOfMonth/1000,'unixepoch','start of month')")
fun getData(dateOfMonth : Date): List<Transaksi> // <-- changed parameter's type to Date
因此,您将日期放入方法(需要的月份中的任何月份),并在同一个月中获取所有带有日期的行
更新
要按月和年获得相同的结果,可以在DAO中添加另一个方法(但不带任何注释),然后调用上面提到的getDate
方法:
fun getDataByMonthAndYear(month: Int, year: Int): List<Transaksi> {
val calendar = Calendar.getInstance()
calendar.set(year, month , 1)
val date = calendar.time
return getData(date)
}