每天DATE TIME从sqlite数据库获取数据

时间:2011-06-08 18:11:13

标签: android sqlite datetime

我有一个sqlite数据库。我有三列:_id,date,value。

我现在想要根据日期中的日期提取_id:s的计数,并计算int值的平均值。这适用于Android应用。

所以我想“选择日期和每天(60天)的日期,计算今天有多少_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]'工作。我不知道如何将这个值增加到60,然后我可以如何存储这六十天中每一天的计数和vl。

感谢很多!

2 个答案:

答案 0 :(得分:4)

您需要使用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个实际日期),您可以使用WHERE:

SELECT date,COUNT(_id),AVG(value) FROM v_efforts WHERE date>DATE('now','-60 days') GROUP BY date ORDER BY date DESC;

答案 1 :(得分:1)

版本3的文档相当不错:

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

我会看一下处理内置日期时间函数的块。由于SQLite不支持实际日期datetype:

计算当前日期:

  

选择日期('现在');

计算当月的最后一天:

  

选择日期('现在','月初','+ 1   月',' - 1天');

计算给定unix时间戳1092941466的日期和时间。

  

SELECT datetime(1092941466,   'unixepoch');

计算给定unix时间戳1092941466的日期和时间,并补偿您当地的时区。

  

SELECT datetime(1092941466,   'unixepoch','localtime');

计算当前的unix时间戳。

  

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

计算自签署美国独立宣言以来的天数。

  

SELECT julianday('now') -   儒略日( '1776年7月4日');

计算自2004年特定时刻以来的秒数:

  

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

计算当年10月第一个星期二的日期。

  

选择日期('现在','年初','+ 9   几个月,'工作日2');

计算自unix时代以来的时间(以秒为单位)(如strftime('%s','now')除了包括小数部分):

  

SELECT(julianday('now') -   2440587.5)* 86400.0;