我有一个带有表"条目"的房间数据库,其中我的列value(int)
,cat_id(int)
和date(Date)
。
我想获得当前月的所有条目和本周所有条目的总和。但是选择:
@Query("SELECT sum(value) FROM Entry WHERE cat_id = :cat_id AND WEEK(date, 5) = WEEK(:date, 5) AND YEAR(date) == YEAR(:date)")
float getValueThisWeekByCatId(int cat_id, Date date);
@Query("SELECT sum(value) FROM Entry WHERE cat_id = :cat_id AND MONTH(date) = MONTH(:date) AND YEAR(date) == YEAR(:date)")
float getValueThisMonthByCatId(int cat_id, Date date);
不工作。
这是错误:
查询存在问题:[SQLITE_ERROR] SQL错误或丢失 数据库(没有这样的功能:周) float getValuethisweekbyCatid(int cat_id,日期);与功能月相同
有其他方法可以选择吗?
有点晚了,但由于存在类似的问题,我偶然发现了这个问题,并且您在答案中使用strftime的解决方案是正确的。
尝试使用您的桌子和查询,对我有用:
CREATE TABLE Entry(
id int primary key,
cat_id int,
value int,
date date
);
insert into entry (id, cat_id, value, date) values (1, 1, 50, '2019-03-19');
insert into entry (id, cat_id, value, date) values (2, 1, 30, '2019-02-20');
SELECT sum(value)
FROM Entry
WHERE cat_id = 1
AND strftime('%m', date) = strftime('%m', '2019-03-01')
AND strftime('%Y', date) = strftime('%Y', '2019-03-01')
也可以与Currentdate一起使用,但显然必须使用当前日期条目。
示例