2017-02-19 5 views
0

Мой день сохраняется в виде строки в sqlite в формате «EEE MMM dd HH: mm: ss zzz yyyy». это очень важно, что спасен таким образом.SQLite по дате с форматом EEE MMM dd HH: mm: ss zzz yyyy

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

String selectQuery = "SELECT * FROM " + InteractionSchema.TABLE + 
        " interaction " + " WHERE interaction." + 
        InteractionSchema.KEY_owner + 
        " =? ORDER BY datetime(" + InteractionSchema.KEY_date + 
        ") DESC LIMIT 15"; 

Это не работает на всех, я пытался использовать все другие SQLite date function, но безрезультатно. Я уверен, что это связано с форматом даты. С кем-нибудь это касалось? (PS, это не дубликат, я уже прошел аналогичные вопросы по stackoverflow)

+1

'очень важно, чтобы этот способ был сохранен.' ... Этот формат вызовет проблемы в SQL. Почему это важно? Я предпочитаю хранить дату в стандартном формате 'yyyymmdd' и генерировать вашу версию при запросе. –

ответ

1

Вы всегда должны сохранять даты как временные метки UTC (INTEGER) в SQLite на устройствах Android. Таким образом, вы можете легко сравнивать и сортировать их, и они используют меньше места для хранения.

Тогда ничто не мешает вам форматировать дату до ее первоначального формата, используя SimpleDateFormat.

Если часовой пояс является важным для сохранения (предположим, что даты всегда должны быть отформатированы в соответствии с часовым поясом конкретной страны, а не с использованием локали по умолчанию), вы можете сохранить смещение UTC в отдельном столбце следующего к метке времени.

0

Если вы хотите показать дату и время, а также хотите, чтобы иметь возможность сортировать данные без дополнительной обработки, вы можете иметь два столбца TEXT и INTEGER где вы можете сохранить отформатированную дату в столбце и времени TEXT в мельницах в столбце INTEGER и отсортировать данные по данным INTEGER. Таким образом, вы можете достичь обеих целей.

+1

Даты в SQLite в основном просто строки. –

+0

Если вы сохраните дату в виде строки, то функция «Порядок по функциям» не будет работать. Его лучше хранить дату как тип данных DATETIME или иметь вид столбца _id, который является автоматически увеличиваемым rowid, который можно легко отсортировать. – Deepesh

+1

Нет типа DATETIME в sqlite, дата как строка в формате yyyyMMdd может быть заказана, а androidhive - это плохой сайт для учебников. – Selvin

 Смежные вопросы

  • Нет связанных вопросов^_^