Android 在SQLITE数据库中使用当前日期

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

我正在使用sqlitedatabase中的当前日期

 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()));存储时会将其视为日期字符串还是长整数值。非常感谢