从会议室数据库获取当前月份

问题描述

我不知道如何从Room数据库获取当前月份的数据

我尝试了一下,但是没有用,数据一直显示一个

@Query("SELECT * FROM transaksi WHERE strftime('%m',tanggal) = :tgl")
fun getData(tgl : String): List<Transaksi>

因此tanggal变量是Date类型。我正在使用TypeConverters,日期的格式重要吗?因为我将日期的格式设置为“ dd-MM-yyyy”。

解决方法

我认为返回类型不应该是表本身,而应具体说明返回类型:

尝试:

@Query("SELECT * FROM transaksi WHERE strftime = :tgl")
fun getData(tgl : String): List<String>
,

如果您使用Int保存Date,请尝试以下方法:

@Query("SELECT * FROM transaksi WHERE datetime(tanggal/1000,'unixepoch','start of month') = datetime(:dateOfMonth/1000,'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)
}