问题描述
@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)
}