房间数据库功能周(),月(),等



我有一个带有表"条目"的房间数据库,其中我的列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一起使用,但显然必须使用当前日期条目。

示例

最新更新