2010-03-23 65 views
0

假设我每晚在sqlite3数据库中插入一个数据点。有谁能告诉我如何获得过去30天的数据点吗?从Sqlite3数据库获取过去数据

感谢, 拉吉

+0

你是什么意思“数据点”?你能提供一个你如何创建这些“数据点”的例子吗? – 2010-03-23 05:24:07

+0

数据点只是测试分数。我将在表中包含日期字段,并希望获取过去的数据(例如:过去30天的数据,过去90天的数据)。另外,我每天晚上只会为每个测试插入一个数据点。 – Raj 2010-03-23 05:30:04

回答

1

SQLite是一个非常轻量级的数据库引擎,所以据我所知,它不存储历史插入信息。插入数据时,必须在表格中设置一个日期字段。

一个可能的破解(如果你处于狭窄的位置)是使用表的自动递增键/ id字段来获取最后30行。如果你还没有从那以后删除的任何数据,这只会工作,只有被准确地插入每天一行:

SELECT * FROM table WHERE id > ((SELECT MAX(id) FROM table) - 30) 
+1

这假定每天只有一条记录,这似乎是一个非常脆弱的假设。最好记录时间戳,并根据该时间戳查询“过去30天”。 – bignose 2010-03-23 05:56:59

1

确保表中有每个数据点的时间戳。

CREATE TABLE smodgen (
    id INTEGER NOT NULL, 
    when DATETIME NOT NULL, 
    sensor_value INTEGER NOT NULL, 
    PRIMARY KEY (id)); 

然后您可以使用该时间戳来查询数据点。

SELECT id, when, sensor_value 
FROM smodgen 
WHERE 
    when >= DATETIME('now', '-30 days'); 
+0

谢谢。在我的情况下,我只需要这个:time> = DATETIME('now','-30 days'); (从过去30天到现在的数据)。 – Raj 2010-03-23 06:43:25