【问题标题】:SQLite select sum with monthly group bySQLite 选择按月分组的总和
【发布时间】:2017-04-24 23:40:16
【问题描述】:

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

我发现的是这个请求:

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

但我正在拉扯我的头发,因为我无法从这个函数中收集任何月份strftime('%m', date);

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

存储在我的数据库中的实际日期是:“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) = 2016 年 12 月 1 日星期四 00:00:00 GMT+00:00 2016
  • cursor.getString(1) = null

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

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

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

然后在将日期保存到数据库之前将日期添加到我的 Money 对象中:dateFormat.parse("01/12/2016")

你能帮帮我吗? 谢谢。

【问题讨论】:

  • The actuel date stored within my DB is : "Thu Dec 01 00:00:00 GMT+00:00 2016" 那么我们有你的错误的原因。您应该将日期存储为 有效 SQLite TimeString。
  • 好吧,这就是我的想法,但我尝试了很多解析方法,不知道如何添加有效日期,什么是有效日期,SQLite 说话?谢谢。
  • 即:2016-12-09。您可以搜索sqlite timestring 并获取官方文档。
  • 我会在问题中添加细节,会更容易解释
  • I correctly gather the date 但它的格式错误

标签: android database sqlite date strftime


【解决方案1】:

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

当我创建我的对象时,我只是把存储在我的类中的日期(java.util.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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-29
    • 2020-02-21
    • 2021-05-31
    • 1970-01-01
    • 2012-02-20
    • 2020-02-10
    • 1970-01-01
    相关资源
    最近更新 更多