android - 在android中的两个日期值之间获取SQLite表中值的总和

标签 android sqlite

我正在尝试获取两个日期之间的列的总和。但是我得到的不是两个日期之间的总和,而是整个总和。以下是我尝试过的。

创建sqlite表的代码:

public class DataBaseHelper extends SQLiteOpenHelper {
    public DataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table demo(id integer primary key,current_date date,transaction_type text,category text,amount text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

我正在按如下方式从 Activity 中执行查询:

DataBase db=new DataBase(this);
int sum;
sum=db.calculateSumDebit(start_date, end_date);

DataBase 类中的查询代码:

public int calculateSumDebit(String start_date, String end_date)
    {
       int sum=0;
        SQLiteDatabase sqldg=database.getReadableDatabase();

       Cursor cur = sqldg.rawQuery("SELECT sum(amount) FROM demo WHERE current_date  BETWEEN '" + start_date + "' AND '" + end_date + "'", null);
        if(cur.moveToFirst())
        {
            sum= cur.getInt(0);
        }
        return sum;
    }

我得到的是全部金额列的总和,而不是所需日期之间的总和。请帮忙。

最佳答案

您使用了 'current_date' 作为列名,它是 sqlite 中的关键字。这将始终返回当前日期。请更改列名称,如 'curr_date' 。在 sqlite 中也没有 date 数据类型使其成为 Text 并使用这样的查询

SELECT SUM(amount) FROM demo WHERE date(curr_date) BETWEEN date("2015-12-16") AND date("2015-12-17")

谢谢

关于android - 在android中的两个日期值之间获取SQLite表中值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34304284/

相关文章:

android - 在 Android 中发出 4-5 个请求后,Jquery 移动 ajax 请求不起作用

安卓:什么错误?

sqlite - 在 Go GORM 中显示 Foreign Keys 的 Foreign Keys

sql - 从2个不同的表中获取数据

android - 在开发和生产中使用不同的 firebase 服务帐户

java - java.util.Scanner 有那么慢吗?

java - java服务器和android客户端之间的SSL连接失败

java.sql.SQLException : database locked 异常

java - 生成5分钟的随机数

python - PyTables 与 SQLite3 插入速度