Использование метода select в SQL - PullRequest
0 голосов
/ 01 апреля 2012

Я добавил 3 строки данных в базу данных SQL в Android.Четвертая строка составляет базу данных, однако это дата:

SimpleDateFormat outputDate = new SimpleDateFormat(yyyy-MM-dd)

Date outputDate = new Date();

Когда пользователь вводит информацию в базу данных, метод добавления для базы данных создает дату, которая добавляется в базу данных.

Мой вопрос: как я могу использовать эти импортированные даты, чтобы создать метод, при котором будут добавлены только те строки в базе данных, которые были добавлены за последние 31 день?

Метод SELECT приходит на ум в результате исследований, но я не знаю, как его реализовать?

Спасибо

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Предполагая, что ваш движок базы данных - SQLite, вы должны попробовать что-то подобное

SELECT * from your_table where julianday('now') - julianday(your_date_field)<=31; 

Возможно, вас также заинтересуют функции даты SQLite: http://www.sqlite.org/lang_datefunc.html

0 голосов
/ 01 апреля 2012

Пока вы спрашиваете об Android, я предполагаю, что база данных, которую вы используете, - SQLite.SQLite не имеет типа данных на дату.Таким образом, у вас есть несколько вариантов: сохранить дату в виде строки (как вы это сделали) или сохранить временную метку даты.

Я настоятельно рекомендую вам использовать второй вариант, поскольку он собирается конвертировать ваши даты в целые числаи это будет еще проще для обработки.

Таким образом, если вы хотите выбрать только события за последние 31 день, вы можете сделать:

SQLiteDatabase database = helper.getWriteableDatabase();
final long millisIn31Days = 31 * 24 * 60 * 60 * 1000; 
String where = "<your-date-column> >= ?"
String [] whereArgs = { String.valueOf(new Date().getTime() - millisIn31Days) };
Cursor cursor =
    database.query("<TABLE_NAME>", null, where, whereArgs, null, null, null);

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

Если вы, однако, хотите придерживаться строкового решения, вы все равно можете продолжить сравнение строк, если вы правильно указали формат даты(у тебя, похоже, так).В строковом решении вам нужно будет рассчитать дату 31 дня назад.Для этого вы можете использовать вспомогательные методы класса Calendar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...