2010-03-23 72 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