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

Android SQLite:如何获取与当前月份匹配的表值?,android,sqlite,Android,Sqlite,我有一个SQLite表,其中一列表示花费的金额,另一列表示花费的时间(YYYY-MM-DD)。两列都是字符串。我如何编写一个查询,以获得本月的总花费 最近的一次是 select sum(expenseValue) from expenses_table where CAST(substr(date,6,2) AS INT) == strftime('%m', 'now ') 这不是错误,但也不会产生任何值。不要将比较作为整数,而是将比较作为字符串: select sum(expenseValu

我有一个SQLite表,其中一列表示花费的金额,另一列表示花费的时间(YYYY-MM-DD)。两列都是字符串。我如何编写一个查询,以获得本月的总花费

最近的一次是

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

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

不要将比较作为整数,而是将比较作为字符串:

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

可能发生的情况是,“6”(作为一个整数)不等于字符串形式的“06”。

不要将比较作为整数,而是将比较作为字符串:

select sum(expenseValue)
from expenses_table
where substr(date, 6, 2) = strftime('%m', 'now')
可能发生的情况是,“6”(作为整数)不等于字符串中的“06”。

显然strftime(“%m%”,'now')返回07,即使当前月份是6月。因此,当前月份的正确查询是 选择总和(费用值) 从表中 其中substr(date,6,2)=strftime(“%m”、“now”、“1个月”)。 谢谢戈登

显然strftime(“%m%”,“now”)返回07,即使当前月份是6月。因此,当前月份的正确查询是 选择总和(费用值) 从表中 其中substr(date,6,2)=strftime(“%m”、“now”、“1个月”)。
谢谢戈登

如果日期的格式为
yyyy-mm-dd
,则可以使用日期修饰符轻松计算日期:

SELECT * FROM expense WHERE date > date('now', 'start of month');
通常,您可以发出以下简单查询:

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

请参见

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

SELECT * FROM expense WHERE date > date('now', 'start of month');
通常,您可以发出以下简单查询:

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

请参见

Hmm,仍然没有返回任何值。从费用表中选择sum(expenseValue),substr(日期,6,2)=“06”将起作用,但与strftime的比较不起作用。@callynx。我刚注意到“now”后面有一个空格。也许这就是问题所在。嗯,仍然没有返回任何值。从费用表中选择sum(expenseValue),substr(日期,6,2)=“06”将起作用,但与strftime的比较不起作用。@callynx。我刚注意到“now”后面有一个空格。也许这就是问题所在。您的
date
列数据类型是
varchar
datetime
?。。您不应该使用sqlite关键字作为列名,即
date
。您的
date
列数据类型是
varchar
datetime
?。。您不应该使用sqlite关键字作为列名ie
date