在sqlitedatabase中使用当前日期

时间:2014-03-17 15:42:26

标签: android

我正在使用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);

1 个答案:

答案 0 :(得分:0)

这样的查询,只要您还在数据库中存储毫秒时间戳。

根据评论,您可以存储格式化的日期字符串,以便查询无法正常工作。要解决此问题,请存储长整数值,例如System.getTimeInMIllis()Date getTime()返回的值。

此外,如果计算稍长的时间段,请在计算中使用long来防止32位有符号整数溢出,例如:将1000 * 60 * 60 * 24 * 14更改为1000 * 60 * 60 * 24 * 14L