Сортировать списки по дате? - PullRequest
0 голосов
/ 06 июня 2011

У меня есть вопрос.В моем приложении я сохранил в своей базе данных несколько списков.Каждый список связал дату в этом формате 6 июня 2011 года.Как я могу заказать эти списки по дате?Я написал, что функционирую так:

public Cursor getAll(){

    return (mDb.rawQuery("SELECT _id, Title, Shop , Data , Budget_allocated ," +
            " Budget_spent FROM Lists ORDER BY Data",null));
}

, но это не работает нормально.Я думаю, что это сравнить только день.Например, если у меня есть 31 мая 2011 года и 6 июня 2011 года, он скажет, что первая дата идет после второй.

Возможно, что я пытаюсь сделать?Должен ли я изменить дату в следующем формате: 6-06-2011?

Спасибо ..

Ответы [ 3 ]

0 голосов
/ 06 июня 2011

Если ваш столбец Data не относится к типу datetime, может возникнуть проблема.Посмотрите на этот связанный вопрос SO и ответы:

SQL ORDER BY проблема с датой

0 голосов
/ 06 июня 2011

Я ничего не знаю о разработке Android, но похоже, что ваше поле даты хранится в виде строки, а не даты, это правильно?

Если это так, вы можете либо:

  • Измените таблицу так, чтобы в поле была дата (тогда она должна корректно сравниваться)
  • Или сохраните ее в стандартном формате, чтобы сравнение строк по умолчанию сортировало даты правильно.Поскольку сравнение строк сортируется первым по первому символу, вторым по второму символу и т. Д., На первом месте будет наибольшая разница во времени, т.е.«2011-05-31» (включая нули).

(Вы должны иметь возможность преобразовать поле, создав новое поле, скопировав данные из старого поля в новое поле вправильный формат, а затем удаляя старое поле и переименовывая новое, или, проще, если вы просто хотите изменить формат текста. Вы должны быть в состоянии сделать это либо из кода, либо с помощью запроса «обновить», AFAIK.)

0 голосов
/ 06 июня 2011

Используйте формат даты следующим образом ... yyyy-MM-dd HH:mm:ss.Это гарантированно можно сортировать в порядке возрастания или убывания.

...