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

时间:2020-10-07 18:10:49

标签: android database android-room

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

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

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

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

2 个答案:

答案 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)
}
相关问题