Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
igrok-vip
0 / 0 / 3
Регистрация: 22.04.2013
Сообщений: 116
#1

Выборка по датам в SQLite - Программирование Android

26.05.2013, 13:59. Просмотров 3116. Ответов 4
Метки нет (Все метки)

Много страниц прочитал по этому вопросу, но мнения людей расходятся. Кто-то говорит что даты лучше хранить в формате String, кто-то, что в Integer.

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

Как я понял текущую дату можно узнать с помощью календаря в миллисекундах. В таком же виде можно её и сохранить в базу в формате Integer(при том это самый быстрый для поиска вариант).

Но не могу понять как тогда делать выборку по месяцам?
Как построить запрос, если у меня в базе хранятся миллисекунды, а на входе запроса дата вида (YYYY-MM)?

По ссылке http://www.sqlite.org/cvstrac/wiki?p...dTimeFunctions функции переводят строку в дату, следовательно нужно как-то перевести содержимое integer'овской колонки с миллисекундами в дату возможностями самой SQLite? Или таки хранить всё в String для возможности сравнения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 13:59     Выборка по датам в SQLite
Посмотрите здесь:

Sqlite выборка по маске - Программирование Android
Подскажите, имеется ли в sqlite возможность выборки данных по маске? Например (для SQL Server), select * from words where word like 'И_'.

SQLite и выборка по условию - Программирование Android
SQLite не работает выборка по условию Устройство или ОС, прошивка: LG d380 Коротко опишу свои действия. 1. разобрал пример...

Выборка с базы данных SQLite - Программирование Android
Доброго времени суток ребята. Занимаюсь простым приложением, что-то типа заметок. Вот случилась незадача с работой SQLite. База...

Выборка данных за последние 24 часа SQLite - Программирование Android
Необходимо получить данные из базы SQLite за последние 24 часа. В базе одна таблица с 3-мя колонками(широта, долгота и время). Время...

SQLite - Программирование Android
Мне не подскажите где можно взять хорошие примеры по SQlite.

SQLite - Программирование Android
почему id = 0 ??? public void onClick(View view) { dataBase = new DataBase(context); sqLiteDatabase =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.05.2013, 14:27     Выборка по датам в SQLite #2
ну так по этой ссылке же все написано даже с примерами...
igrok-vip
0 / 0 / 3
Регистрация: 22.04.2013
Сообщений: 116
26.05.2013, 21:54  [ТС]     Выборка по датам в SQLite #3
Точно, не дочитал до конца) SELECT datetime(1092941466, 'unixepoch', 'localtime'); это подходит.
Только не совсем понимаю зачем нужно это 'localtime', нужно ли использовать 'localtime' если при внесении записи в базу я узнаю время в миллисекундах так: Calendar.getInstance().getTimeInMillis();?

Добавлено через 7 часов 6 минут
И ещё вопрос, как перевести 13ти-значное число (считанное из базы 10ти-значное умноженное на 1000) содержащее миллисекунды в год, месяц, день?

Пытаюсь запихать их в календарь
Calendar c = Calendar.getInstance();
c.setTimeInMillis(1111111111111);

А потом из него вытаскивать
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int mon = c.get(Calendar.MONTH);

Ругается на длину числа 1111111111111. А если текущее время в миллисекундах Calendar.getInstance().getTimeInMillis(); (которых тоже 13 цифр) запихать в переменную long, то проблем нет.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
26.05.2013, 22:10     Выборка по датам в SQLite #4
Java
1
c.setTimeInMillis(1111111111111L);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 23:13     Выборка по датам в SQLite
Еще ссылки по теме:

SQLite - Программирование Android
Возвращаясь к старой теме, вернусь к проблеме. По рекомендации попробовал сделать от сюда Тут отправляем данные для записи в бд obj...

SQLite - Программирование Android
Приложение вылетает с ошибкой, не подскажете, в чём проблема? public class DatabaseHelper extends SQLiteOpenHelper { private...

SQLite - Программирование Android
Создаю простенькую таблицу. db.execSQL("create table " + DATABASE_TABLE_NAME + " (" + ID_COLUMN + " integer primary key...

SQLite Android - Программирование Android
Привет всем! У меня образовалась такая проблема: пишу приложение на android, при этом воспользовавшись макетом "Master/Detal Flow". Мне...

SQLite запрос - Программирование Android
Добрый день! Не могу разобраться как писать запросы SQL. Предположим, у меня есть таблица Events в базе SQLite (см. вложенную...

ListView + SQLite - Программирование Android
Привет. Взял код из урока 52 на startandroid, немного его изменил public class DB { private static final String DB_NAME =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
igrok-vip
0 / 0 / 3
Регистрация: 22.04.2013
Сообщений: 116
26.05.2013, 23:13  [ТС]     Выборка по датам в SQLite #5
Спасибо, теперь всё работает.
Последний вопрос: Если число 1365120000 средствами sqlite перевести в дату, то получится 2013-04-05 00:00:00, затем загрузить это число умноженное на 1000 в календарь и считать отдельно год, месяц, день, час, минуты, секунды, то всё совпадает.
Но если потом из этого календаря взять миллисекунды и разделить на 1000, то получается уже 1365163200 т.е. 2013-04-05 12:00:00. Откуда взялись ещё 12 часов и как их убрать?
Yandex
Объявления
26.05.2013, 23:13     Выборка по датам в SQLite
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru