gpt4 book ai didi

android - SQLite 选择按月分组的总和

转载 作者:搜寻专家 更新时间:2023-10-30 23:36:50 26 4
gpt4 key购买 nike

我正在网上搜索以找到满足此需求的解决方案:我需要按月收集“金额”数据组的总和。

我找到的是这个请求:

Cursor cursor = mDb.rawQuery("SELECT strftime('%m', date), SUM(amount) FROM " + DATABASE_TABLE + " GROUP BY strftime('%m', date)", null);

但我很紧张,因为我无法从该函数strftime('%m', date);

收集任何月份

我在网上发现这可能来 self 的数据库中的日期格式,该函数无法理解。

存储在我的数据库中的实际日期是:“Thu Dec 01 00:00:00 GMT+00:00 2016”

我使用这个游标来检查返回值:

Cursor cursor = mDb.rawQuery("SELECT distinct date, strftime('%m', date) FROM " + DATABASE_TABLE, null);

在游标中(只检查游标的第一次检查)我有:

  • cursor.getString(0) = Thu Dec 01 00:00:00 GMT+00:00 2016
  • cursor.getString(1) = null

所以我正确地收集了日期,这是无效的转换。

编辑:正如提议和解释的那样,我认为函数可能会误解格式(显然是这种情况)。

这是我将日期添加到数据库的方式:我用这个:dateFormat = new SimpleDateFormat("dd/MM/yyyy");

然后这一行将日期添加到我的 Money 对象,然后再将其保存到数据库中:dateFormat.parse("01/12/2016")

你能帮帮我吗?谢谢。

最佳答案

感谢 Rotwang 引导我解决格式问题,我的问题出在我的数据库项目创建者中

当我创建我的对象时,我只是将存储在我的类中的日期 (java.util.Date date) 没有格式化。

所以日期总是以错误的格式存储。我必须在创建阶段对其进行格式化。下面是创建我的对象并解决我的问题的代码。

dateFormat = new SimpleDateFormat("yyy-MM-dd"); 再次感谢 Rotwang

和:

public void createMoney(Money money) {
ContentValues values = new ContentValues();

values.put(TITLE, money.get_title());
values.put(AMOUNT, money.get_amount());
values.put(DETAILS, money.get_details());
values.put(DATE, dateFormat.format(money.get_date()));
values.put(TYPE_FK_ID, money.get_typeFkId());
values.put(CONTACT_FK_ID, money.get_contactFkId());
values.put(REMINDER_FK_ID, money.get_reminderFkId());

mDb.insert(DATABASE_TABLE, null, values);
}

关于android - SQLite 选择按月分组的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com