Tengo una base de datos de sala con una tabla "Entradas" donde tengo las columnas value(int) , cat_id(int) y date(Date) .
Quiero obtener la suma de todas las entradas del mes actual y todas las entradas de la semana actual. Pero las selecciones:
@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);no trabajes
Este es el error:
Hay un problema con la consulta: [SQLITE_ERROR] Error de SQL o base de datos faltante (no existe tal función: SEMANA) float getValueThisWeekByCatId(int cat_id, Date date); Lo mismo con la función MES
¿Hay otra manera de esa selección?
Un poco tarde, pero me topé con esta pregunta debido a un problema similar, y su solución con strftime en la respuesta es correcta.
Intenté con su tabla y consulta y funcionó para mí:
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')También funciona con CURRENTDATE pero obviamente tiene que usar entradas de fecha actual.