使用sqlite的总金额

问题描述:

我是新来的android和我有问题获取总金额大于日期('现在')。我将sqlite数据库中的日期存储为INTEGER,将我的金额列存储为Real。我从DatePicker的服用日期和使用使用sqlite的总金额

@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(); 

记录输出 总金额:0.0

我知道有可以做的其他方式这不使用日期函数但我想知道这是可能的使用日期('现在')函数?

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

Date Sqlite

一种解决方案是从Java代码获取当前毫秒,并通过它查询。

SQLite的date function返回格式为yyyy-MM-dd的字符串。

为了得到一个数字,是在你的d_date列与价值兼容,使用strftime得到的,因为时代的秒数,并将其转换为毫秒:

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

它的工作!我可以将你的答案投票,因为我的声望低于15,但是一旦我超过了15的声望,我会投你的答案。谢谢 – Brother 2014-08-31 20:36:42