如何从基于sqlite的日期约束中提取数据

时间:2013-11-19 05:04:07

标签: android sqlite

我正在做一个包含名为'Purchase'的表格的应用程序,使用sq lite。表有三个字段ID,购买金额,日期。当我浏览Google时,我发现日期字段以sq lite格式存储为整数或文本。所以我使用var char来存储文本。 现在我的问题是我想根据日期约束显示表格中的详细信息 (例如:27-7-2012到10-8-2013之间的数据)我如何提取数据,因为日期字段被声明为var char .. 任何人都可以帮忙......

2 个答案:

答案 0 :(得分:0)

这是我在DBAdapter类中使用的方法:

public Cursor getAllDetailsField(String date) {

        return db.rawQuery("select * from " + TABLE_NAME_FIELDW + " where "
                + KEY_DATE + " = '" + date + "'", null);
    }

这里Date作为参数传递,这意味着当我在Activity中使用这个方法时,我必须为方法分配一个Date,所以它将执行查询。上面的查询只是获取我在活动中传递的日期的记录。

活动:

private void loadFieldDatabase(){

         String date = app.getDARDate(); 
            // DATE is FETCHED FROM APPLICATION CLASS OBJECT, YOU CAN SET IT
            // IN PREVIOUS OR CURRENT ACTIVITY , HOWEVER YOU MAY FETCH ANY WAY  
            // YOU WANT TO. JUST MAKE SURE WHATEVER YOU PASS, HOLDS THE DATE VALUE

                 String date = app.getDate();
        Cursor c = db.getAllDetailsField(date);
        if (c != null && c.getCount() > 0) {
            c.moveToFirst();
            for (int count = 0; count < c.getCount(); count++) {

                DBbeanclass detail = new DBbeanclass();

                detail.setDate(c.getString(c
                        .getColumnIndex(DARDBAdapter.KEY_DATE)));
                detail.setName(c.getString(c
                        .getColumnIndex(DARDBAdapter.KEY_NAME)));

                arrCustomerField.add(detail);
                c.moveToNext();
            }
            c.close();
        }
    }

你会看到我没有为你编写查询。但我认为你可以自己做到这一点

答案 1 :(得分:0)

考虑使用SQLite appropriate日期格式。

使用YYYY-MM-DD格式的日期将大大简化您的代码,允许更快的数据库内部(无需获取每一行来评估代码),并且还可以利用索引来利用性能。

转换现有数据也很容易。