Android 在SQLITE数据库中使用当前日期
我正在使用sqlitedatabase中的当前日期Android 在SQLITE数据库中使用当前日期,android,Android,我正在使用sqlitedatabase中的当前日期 public String getDataforSevenDays() { // TODO Auto-generated method stub String[] columns = new String[]{KEY_ROWID, KEY_NAME}; String result =" "; long sevenDays = System.curr
public String getDataforSevenDays() {
// TODO Auto-generated method stub
String[] columns = new String[]{KEY_ROWID, KEY_NAME};
String result =" ";
long sevenDays = System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 7;
Cursor c = ourDatabase.query(DATABASE_TABLE, null, KEY_DATE + " > "+ sevenDays, null, null, null, null);
int iRow = c.getColumnIndex(KEY_ROWID);
int iName = c.getColumnIndex(KEY_NAME);
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
result = result + c.getString(iName) + "\n";
}
return result;
}
现在,如果我想查询数据库并获取过去14天的数据,这是正确的方法吗
long fourteenDays = System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 14;
Cursor c = ourDatabase.query(DATABASE_TABLE, null, KEY_DATE + " > "+ fourteenDays, null, null, null, null);
如果您还在数据库中存储毫秒时间戳,这样的查询就可以工作 根据注释,您正在存储格式化的日期字符串,以便查询无法工作。要解决此问题,请存储长整型值,例如由
System.getTimeInMIllis()
或Date
getTime()
返回的值
另外,如果您计算的时间段稍长,请在计算中使用long来防止32位有符号整数溢出,例如,将
1000*60*60*24*14
更改为1000*60*60*24*14L
实际上取决于您在数据库中存储日期的方式。我将其存储为cv.put(KEY\u DATE,sdf.format)(新日期(System.currentTimeMillis());因此,如果我想查询过去14天的数据库,我会像这样编写长的forteentays=System.currentTimeMillis()查询吗-1000*60*60*24*14;如果在查询中使用毫秒整数,则在存储时也使用毫秒整数和未格式化的字符串。如何将日期存储为毫秒,请给出一个示例。感谢cv.put(KEY\u date,System.currentTimeInMillis())
很抱歉,可能是我不理解。我正在数据库中存储日期,格式为SimpleDataFormat sdf=new SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”);ContentValues cv=new ContentValues();cv.put(KEY_-date,sdf.format(new-date(System.currentTimeMillis()));存储时会将其视为日期字符串还是长整数值。非常感谢