Как отобразить данные между двумя датами, основанные на выбранных элементах вращателей Android из sqlite db? - PullRequest
1 голос
/ 12 сентября 2011

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

Является ли этот следующий запрос правильным SELECT * FROM TableName WHERE category = ? AND FromDate >= ? AND ToDate <= ? в Android SQLite.Может кто-нибудь помочь мне, пожалуйста.

Моя схема БД

id |даты |валюта |купец |payType |категория

1 |2011-9-9 |доллар |больше |дебет |личный

2 |2011-9-12 |евро |Honda |наличные деньги |Бизнес

Ответы [ 3 ]

5 голосов
/ 12 сентября 2011

ОК, ваш формат даты ГГГГ-ММ-ДД выглядит хорошо;убедитесь, что даты TO и FROM форматируются как строки одинаково.Запрос:

SELECT * FROM TableName where category = ? and dates >= ? and dates <= ?;

или как предложил Пратик

SELECT * FROM TableName where category = ? and dates between ? and ?;

По запросу, вот возможный оператор запроса SQLiteDatabase:

Cursor cursor = db.query("TableName", null,
                         "category = ? and dates between ? and ?", 
                          new String[] {"personal", "2011-09-07", "2011-09-10"},
                          null, null, null);

Где, естественно, вы 'd замените строки selectionArgs значениями из вашего счетчика и дат ОТ и ТО.

Я только что заметил, что ваши даты в показанной таблице не имеют ведущих нулей в полях месяца и дня;они нужны для правильной работы сравнения, поскольку вы фактически сравниваете текстовые строки.Примечание: "2011-09-10" < "2011-9-9", но "2011-09-10" > "2011-09-09"

1 голос
/ 13 сентября 2011

Прежде всего вы должны прочитать SQL как понятый SQLite: функции даты и времени , чтобы вы знали, как SQLite обрабатывает дату и время в запросах. К счастью, ваши данные показывают, что вы используете правильный формат времени

Так что с учетом этого ваш пример запроса станет

SELECT * FROM TableName WHERE category = ?
 AND FromDate >= date(?) AND ToDate <= date(?)

однако, глядя на вашу схему и ваш ответ на некоторые ответы, вы, вероятно, хотите сделать что-то вроде:

  myDB.query(myTable,null,"category = ? AND dates BETWEEN date(?) AND date(?)",
       new String[]{selectedCategory, startDate, endDate}, null);

НЕ забывайте обрезать startDate и endDate любых пробелов.

0 голосов
/ 12 сентября 2011

попробуйте

SELECT * FROM TableName WHERE category = ? AND datecolum between FromDate AND ToDate
...