SQLite:如何获取与当前月份匹配的表值?

时间:2016-07-01 01:46:32

标签: android sqlite

我有一个SQLite表,其中有一列用于花费的金额,一列用于表示花钱的时间(YYYY-MM-DD)。两列都是字符串。如何编写一个查询,它将为我提供本月花费的总金额?

我最接近的是

select sum(expenseValue)
from expenses_table
where CAST(substr(date,6,2) AS INT) == strftime('%m', 'now ')

这不是错误,但也不会产生任何价值。

3 个答案:

答案 0 :(得分:1)

不要将比较作为整数进行比较,将其作为字符串进行比较:

select sum(expenseValue)
from expenses_table
where substr(date, 6, 2) = strftime('%m', 'now')

可能发生的事情是“6”(作为整数)不等于“06”作为字符串。

答案 1 :(得分:1)

如果您的日期采用yyyy-mm-dd格式,则可以使用日期修饰符轻松地对日期进行计算:

SELECT * FROM expense WHERE date > date('now', 'start of month');

通常,您可以发出简单的查询:

SELECT * FROM expense WHERE date > '2016-07-01';

请参阅https://www.sqlite.org/lang_datefunc.html

答案 2 :(得分:0)

显然strftime('%m%','now')返回07,即使当前月份是6月。因此,对当前月份的正确查询是 选择总和(expenseValue) 来自expenses_table 其中substr(date,6,2)= strftime('%m','now',' - 1 month')。 无论如何,谢谢戈登!