如何从Android中的星期日开始从Sq-lite中仅检索1周的数据?

时间:2018-05-18 09:02:39

标签: android sql sqlite android-sqlite

以下是我的代码:

表格创建:

public void onCreate(SQLiteDatabase sqLiteDatabase) {
        final String query = "CREATE TABLE " + Db_Contract.Db_Fieds.TABLE_NAME + " ("
                + Db_Contract.Db_Fieds._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                + Db_Contract.Db_Fieds.MONEY + " REAL NOT NULL,"
                + Db_Contract.Db_Fieds.CAT + " TEXT NOT NULL,"
                + Db_Contract.Db_Fieds.DATE + " TIMESTAMP DEFAULT CURRENT_DATE,"
                + Db_Contract.Db_Fieds.TIMESTAMP + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP" + "); ";
        sqLiteDatabase.execSQL(query);
    }

查询检索1周数据:

private Cursor getAllCurrentData()
    {
        String[] selectArg = new String[]{};
        return db.query(Db_Contract.Db_Fieds.TABLE_NAME,
                null ,
                Db_Contract.Db_Fieds.DATE+ "= date('now', 'weekday 0', '-7 days')",
                selectArg,
                null,
                null,
                Db_Contract.Db_Fieds.TIMESTAMP);
    }

问题是我无法使用上述查询检索1周。请告诉我我在做什么错误。

先谢谢

2 个答案:

答案 0 :(得分:1)

Db_Contract.Db_Fieds.DATE+ "= date('now', 'weekday 0', '-7 days')",

检索DATE等于date()表达式的行。但似乎您希望DATE大于或等于表达式的所有行。尝试:

Db_Contract.Db_Fieds.DATE+ ">= date('now', 'weekday 0', '-7 days')",

请注意>=运算符与=运算符。

答案 1 :(得分:1)

仅检索1周数据我们可以使用以下查询。这将获得过滤数据。

SELECT * FROM myTable WHERE DATE(timeStamp) >= DATE('now', 'weekday 0', '-7 days')

在我们的场景中,您可以使用

Db_Contract.Db_Fieds.DATE+ ">= date('now', 'weekday 0', '-7 days')"

您必须使用大于等于的运算符,这将显示当前工作日数据。您仅使用等于,这将显示星期第一天数据的开始。

我希望这会对你有所帮助!