Страница 1 из 1

Запрос к SQLite сортировка по дате

Добавлено: 24 сен 2013, 14:54
snowkam
Всем добрый день
Есть база данных в ней поле date_s тип у поля DATE

хотел отсортировать по дате в обратном порядке!
формирую запрос mDB.query(DB_TABLE_SOBITIE, null, null, null, null, null, "date_s DESC")

Но оно сортируется только по дню

26.9.2013
25.9.2013
24.9.2014
23.9.2013

А у вас как сортируется?

Re: Запрос к SQLite сортировка по дате

Добавлено: 24 сен 2013, 15:14
KamiSempai
Это по тому, что дата сохраняется как строка, и сортируется тоже как строка.
Если дата будет в формате YYYY-MM-DD от сортируется как надо.

PS: Я обычно храню дату в целочисленном формате как количество миллисекунд. В таком формате можно делать сортировку и лично мне так на много удобнее.

Re: Запрос к SQLite сортировка по дате

Добавлено: 24 сен 2013, 15:29
snowkam
KamiSempai писал(а):Это по тому, что дата сохраняется как строка, и сортируется тоже как строка.
Если дата будет в формате YYYY-MM-DD от сортируется как надо.

PS: Я обычно храню дату в целочисленном формате как количество миллисекунд. В таком формате можно делать сортировку и лично мне так на много удобнее.
А какие методы преобразует целое в дату и обратно?

А может быть ввести еще одну колонку где дату вести в миллисекундах и его сортировать ?! (это так мысли в слух)

Re: Запрос к SQLite сортировка по дате

Добавлено: 24 сен 2013, 15:55
Foenix
нужно использовать класс Calendar для преобразований.
Можно, конечно, еще одну колонку, но можно и в коде преобразование делать для показа с помощью упомянутого класса.

Re: Запрос к SQLite сортировка по дате

Добавлено: 24 сен 2013, 16:09
snowkam
да да спасибо я так и сделал.
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse(date_format);
Calendar c = Calendar.getInstance();
c.setTime(date);
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);

} catch (ParseException e) {
e.printStackTrace();
}