我有一个SQLite表,其中有一列用于花费的金额,一列用于表示花钱的时间(YYYY-MM-DD)。两列都是字符串。如何编写一个查询,它将为我提供本月花费的总金额?
我最接近的是
select sum(expenseValue)
from expenses_table
where CAST(substr(date,6,2) AS INT) == strftime('%m', 'now ')
这不是错误,但也不会产生任何价值。
答案 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';
答案 2 :(得分:0)
显然strftime('%m%','now')返回07,即使当前月份是6月。因此,对当前月份的正确查询是 选择总和(expenseValue) 来自expenses_table 其中substr(date,6,2)= strftime('%m','now',' - 1 month')。 无论如何,谢谢戈登!