Получать данные из базы данных sqlite за день. DATE TIME - PullRequest
3 голосов
/ 08 июня 2011

У меня есть база данных sqlite.У меня есть три столбца: _id, date, value.

Теперь я хочу извлечь количество _id: s в зависимости от дня в дате и вычислить среднее значение типа int.Это для приложения для Android.

Поэтому я хочу "выбрать день в дате и для каждого дня (в течение шестидесяти дней) подсчитать, сколько _id: s на этот день. Наконец, вычислите среднее значениезначение.

Я думаю, это что-то вроде:

"SELECT DATE('now' 'days[i]') as date, COUNT(_id) as count,  AVG(value) as vl FROM v_efforts WHERE DATE(v_efforts.date) = DATE('now' 'days[i]')";

Но я не могу заставить работать 'days[i]'. Я не знаю, как я могу увеличить это значениедо шестидесяти, а затем, как я могу сохранить количество и vl для каждого из этих шестидесяти дней.

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Вы хотите использовать выражение GROUP BY для агрегирования записей по дате. Не совсем ясно, ищете ли вы последние 60 дней записей в базе данных или записи за последние 60 реальных дней (что будет одинаковым, если вы предположите, что записи есть каждый день).

Для первых (последние 60 дней, в которых были записи в базе данных) вы можете использовать предложение LIMIT:

SELECT date,COUNT(_id),AVG(value) FROM v_efforts GROUP BY date ORDER BY date DESC LIMIT 60;

Для последнего (последние 60 реальных дней) вы можете использовать ГДЕ:

SELECT date,COUNT(_id),AVG(value) FROM v_efforts WHERE date>DATE('now','-60 days') GROUP BY date ORDER BY date DESC;
1 голос
/ 08 июня 2011

Документы для Версии 3 довольно приличные:

http://www.sqlite.org/lang_datefunc.html

Я бы посмотрел на блок, который имеет дело со встроенными функциями даты и времени. Поскольку SQLite не поддерживает фактический тип даты даты:

Вычислить текущую дату:

ВЫБРАТЬ дату («сейчас»);

Вычислить последний день текущего месяца:

ВЫБРАТЬ дату («сейчас», «начало месяца», «+ 1» месяц ',' - 1 день ');

Вычислить дату и время по временной метке Unix 1092941466.

ВЫБРАТЬ дату и время (1092941466, 'Unixepoch');

Вычислите дату и время по временной метке Unix 1092941466 и скомпенсируйте местный часовой пояс.

ВЫБРАТЬ дату и время (1092941466, 'unixepoch', 'localtime');

Вычислить текущую метку времени Unix.

SELECT strftime ('% s', 'now');

Подсчитайте количество дней с момента подписания Декларации независимости США.

SELECT julianday («сейчас») - JULIANDAY ( '1776-07-04');

Вычислить количество секунд с определенного момента в 2004 году:

SELECT strftime ('% s', 'now') - strftime ('% s', '2004-01-01 02:34:56');

Вычислить дату первого вторника октября текущего года.

ВЫБРАТЬ дату («сейчас», «начало года», «+ 9» месяцев ',' день недели 2 ');

Вычисляет время с начала эпохи Unix в секундах (например, strftime ('% s', 'now'), за исключением случаев, когда используется дробная часть):

SELECT (julianday («сейчас») - 2440587,5) * 86400,0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...