Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
SkyL1ne_tm
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
#1

Выборка данных за последние 24 часа SQLite - Программирование Android

07.05.2015, 15:47. Просмотров 636. Ответов 8
Метки нет (Все метки)

Необходимо получить данные из базы SQLite за последние 24 часа. В базе одна таблица с 3-мя колонками(широта, долгота и время). Время определяю через Calendar:
Java
1
2
3
4
5
Calendar addTimeCalendar;
public String getAddTime() {
    addTimeCalendar = Calendar.getInstance();
    return addTime = String.valueOf(addTimeCalendar.getTimeInMillis());
}
Затем записываю в базу:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public void addCoordinates() {
    SQL sqlHelper = new SQL(this);
    SQLiteDatabase db = sqlHelper.getWritableDatabase();
    ContentValues cv = new ContentValues();
    Log.d(LOG_TAG, "--- Insert in coordinates: ---");
    cv.put("Latitude", latitude);
    cv.put("Longitude", longitude);
    cv.put("Time", getAddTime());
    long rowID = db.insert("coordinates", null, cv);
    db.close();
    sqlHelper.close();
}
Для выборки такой запрос:
SQL
1
SELECT * FROM coordinates WHERE datetime('now', 'start of day', '-1 day')
Но в результате выборка получается, как если использовать
SQL
1
SELECT * FROM coordinates
Что я делаю не так?Или какие возможные другие варианты решения?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2015, 15:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выборка данных за последние 24 часа SQLite (Программирование Android):

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

Sqlite выборка по маске
Подскажите, имеется ли в sqlite возможность выборки данных по маске? Например...

Выборка по датам в SQLite
Много страниц прочитал по этому вопросу, но мнения людей расходятся. Кто-то...

SQLite и выборка по условию
SQLite не работает выборка по условию Устройство или ОС, прошивка: LG d380 ...

Постолбцовое отображение данных из базы данных SQLite
Уважаемые форумчане, помогите пожалуйста. Необходимо вывести данные из таблицы...

Вывод данных из базы данных SQLite
Здравствуйте уважаемые форумчане! Делаю программу для работы с базой данных...

8
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
07.05.2015, 16:17 #2
мой тебе совет - делай выборку всех данных без условия даты, а выбирай нужные уже на уровне java.
0
SkyL1ne_tm
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
07.05.2015, 16:24  [ТС] #3
Как?
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
07.05.2015, 16:26 #4
конвертируй в java.util.date и вперед
0
SkyL1ne_tm
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
07.05.2015, 17:14  [ТС] #5
Можно пример ?
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
07.05.2015, 17:19 #6
для начала почитай про ORM
https://ru.wikipedia.org/wiki/ORM

затем попробуй у себя реализовать подобную модель (создай объекты данных в таблице)
и оперируй данными как угодно

Например в итоге ты получил список объектов ArrayList<Data> data

Java
1
2
3
4
5
6
7
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DayOfMouth, Calendar.get(Calendar.DayOfMouth)-1);
for(Data d: data){
if(d.GetDate().after(cal.getDate()){
//что-то делаем тут
}
}
писал с телефона, так что.. возможны опечатки
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
07.05.2015, 17:24 #7
Лучший ответ Сообщение было отмечено SkyL1ne_tm как решение

Решение

Цитата Сообщение от fgtmenow Посмотреть сообщение
мой тебе совет - делай выборку всех данных без условия даты, а выбирай нужные уже на уровне java.
Ути-ути, не надо так делать.

SkyL1ne_tm, Храните время не как String, а как long.
Java
1
2
3
public long getAddTime() { 
return Calendar.getInstance().getTimeInMillis()); 
}
Вот выборка.
Java
1
long dayAgoInMillis = Calendar.getInstance().getTimeInMillis() - (24l*60*60*1000);
SQL
1
SELECT * FROM coordinates WHERE datetime>dayAgoInMillis
Добавлено через 1 минуту
Цитата Сообщение от fgtmenow Посмотреть сообщение
для начала почитай про ORM
Да не за чем, вопрос очень простой, и, возможно, человек новичёк. Не стоит с ней заморачиваться.
1
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
07.05.2015, 17:27 #8
Цитата Сообщение от YuraAAA Посмотреть сообщение
Да не за чем, вопрос очень простой, и, возможно, человек новичёк. Не стоит с ней заморачиваться.
лучше сразу приучаться к правильным архитектурным решениям
0
SkyL1ne_tm
2 / 2 / 0
Регистрация: 06.07.2013
Сообщений: 97
07.05.2015, 17:51  [ТС] #9
Цитата Сообщение от YuraAAA Посмотреть сообщение
SkyL1ne_tm, Храните время не как String, а как long.
спасибо большое! получилось!
0
07.05.2015, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2015, 17:51
Привет! Вот еще темы с решениями:

База данных sqlite
Доброго времени суток. Пишу приложение в котором возможна отправка ...

База данных SQLite
Добрый день. Может я повторюсь с вопросом, но вы уж меня простите, не могу...

SQLite вывод данных
Здравствуйте. Подскажите, как вывести данные из колонки БД и записать в...

Сохранить max за последние два 2 часа
Есть реальное время. Есть переменная temperatura: real; как мне за последние...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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