2010-03-23 2 views
0

야간 기준으로 sqlite3 데이터베이스에 데이터 포인트를 삽입한다고 가정합니다. 누구든지 지난 30 일 동안 데이터 포인트를 얻는 방법을 알려줄 수 있습니까?Sqlite3 데이터베이스의 과거 데이터 얻기

덕분에, 주권

+0

"데이터 포인트"는 무엇을 의미합니까? 이러한 "데이터 요소"를 어떻게 작성하는지 예제를 제공 할 수 있습니까? –

+0

데이터 포인트는 테스트 점수 일뿐입니다. 나는 테이블에 날짜 필드를 포함하고 과거 데이터 (예 : 지난 30 일 데이터, 지난 90 일 데이터)를 가져 오려고합니다. 또한 매일 밤 각 테스트에 대해 하나의 데이터 요소 만 삽입 할 것입니다. – Raj

답변

1

SQLite는 지금까지 내가 아는 한, 그것은 역사적 삽입 정보를 저장하지 않는, 매우 경량 DB 엔진입니다. 데이터를 삽입 할 때 테이블에 설정되는 날짜 필드가 있어야합니다.

혹독한 위치에있는 경우 테이블의 자동 증가 키/ID 필드를 사용하여 마지막 30 개의 행을 가져올 수 있습니다. 이것은 당신이 그 이후로 모든 데이터를 삭제하지 않은 경우에만 작동합니다, 단지 정확히 하루에 한 행 삽입되었습니다

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

이것은 하루에 정확히 하나의 레코드가 있다고 가정합니다. 매우 약한 가정으로 보입니다. 타임 스탬프를 기록하고 해당 타임 스탬프에 따라 "과거 30 일"을 쿼리하는 것이 좋습니다. – bignose

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