我有一个带有表“ Entries”的会议室数据库,其中有列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错误或丢失 数据库(无此功能:WEEK) float getValueThisWeekByCatId(int cat_id,Date date);与MONTH功能相同
还有另一种选择方法吗?
答案 0 :(得分:0)
有点晚了,但由于类似的问题,我偶然发现了这个问题,您在答案中使用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,但显然必须使用当前日期条目。