使用sqlite的总和

时间:2014-08-30 22:42:47

标签: android sqlite date

我是Android的新手,我遇到的问题是总金额大于日期('现在')。我将日期存储为sqlite数据库中的INTEGER,将我的数量列存储为Real。我从DatePicker获取日期并使用

将其转换为毫秒
@Override
public void onDateSet(DatePicker view, int selectedYear,int selectedMonth, int selectedDay) {

year  = selectedYear;
month = selectedMonth;
day   = selectedDay;
Calendar c=Calendar.getInstance();
c.set(selectedYear, selectedMonth, selectedDay);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
long dateInMillis=c.getTime().getTime();//I am putting this variable into date column in sqlite

这是我的查询

String selectTotalAmountQuery = "select sum(amount) as total from entry where"+          "d_date>date('now')";//entry is my table name
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectTotalAmountQuery, null);
double amount=0;

if (c.moveToFirst()) {
    amount = c.getDouble(c.getColumnIndex("total"));

    Log.i("TotalAmount :",amount+"");
    c.close();
}
db.close();

日志输出是     TotalAmount:0.0

我知道在没有使用日期功能的情况下可以有其他方法这样做但是我想知道这是否可以使用日期('现在')功能?

2 个答案:

答案 0 :(得分:0)

Sqlite中的日期函数返回'YYYY-MM-DD'字符串格式,因此它不返回毫秒,只返回日期部分而不是时间。

Date Sqlite

一种解决方案是从java代码中获取当前毫秒并将其传递给查询。

答案 1 :(得分:0)

SQLite的date functionyyyy-MM-dd格式返回一个字符串。

要获得与d_date列中的值兼容的数字,请使用strftime获取自纪元以来的秒数,并将其转换为毫秒数:

... WHERE d_date > 1000 * strftime('%s', 'now', 'start of day')