Как получить данные только за 1 неделю из Sq-lite, начиная с воскресенья в Android? - PullRequest
0 голосов
/ 18 мая 2018

Ниже мой код:

Создание таблицы:

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 голосов
/ 18 мая 2018

Для получения только данных за 1 неделю мы можем использовать запрос ниже. Это будет отфильтрованные данные.

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

В нашем сценарии вы можете использовать

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

Вы должны использовать оператор больше, чем равно , это будет отображать данные о днях текущей недели.Вы использовали только , равный , это будет отображать данные начала первого дня недели.

Надеюсь, это поможет вам!

0 голосов
/ 18 мая 2018
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')",

Обратите внимание, оператор >= против оператора =.

...