2013-07-23 2 views
0

버튼이 하나 뿐인 간단한 Android 애플리케이션이 있다고 가정합니다.
해당 버튼 날짜 및 시간 (sqlite)을 클릭하십시오.
그 레코드에 가장 적합한 형식이 무엇일까 궁금합니다. 그 날짜 - 시간의 길거나 긴 문자열을 유지합니다.
목적은 다음을 보여주는 보고서를 작성하는 것입니다.
1. 선택한 요일에 대해 수행 된 클릭의 합계가 시간 단위로 그룹화됩니다.
2. 선택한 주간의 클릭 수 합계를 일 단위로 표시합니다.
3. 선택한 월에 대한 클릭 수를 주 단위로 그룹화합니다.
4. 선택한 연도에 대해 만들어진 클릭 합계를 월별로 그룹화합니다.
/count, hours, days, weeks, year에 의한 SQLite 그룹

이러한 데이터베이스를 만드는 방법 및 이러한 쿼리를 수행하는 방법은 무엇입니까?

답변

9

유닉스 타임 스탬프 ("epoch"이후의 초 수)를 사용하여 투표 할 수 있습니다. 범위 계산에 편리하고 대부분의 견고한 날짜 - 시간 라이브러리에서 이해할 수 있습니다.

SQLite provides a few helper functions 유닉스 타임 스탬프 작업. 가장 유용한 것은 strftime입니다.

INSERT에서 strftime('%s', 'now')을 사용하여 현재 유닉스 타임 스탬프를 삽입 할 수 있습니다. 당신이 계산 할 여겨

SELECT * FROM data 
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00') 
AND timestamp < strftime('%s', '2012-12-25 01:00:00'); 

을 또는 : 당신은 당신이 관심있는 특정 시간 범위를 알고있는 경우

나중에 해당 범위의 최소 및 최대 타임 스탬프를 계산하고 선택 행을 그들 사이에 수 월별 년의 요청 :

SELECT strftime('%m', timestamp), count(*) FROM Data 
WHERE timestamp >= strftime('%s', '2012-01-01 00:00:00') 
AND timestamp < strftime('%s', '2013-01-01 00:00:00') 
GROUP BY strftime('%m', timestamp); 

strftime가 제공하는 형식 옵션의 현명한 사용을 통해, 당신은 아마 꽤 빨리 그 쿼리의 대부분을 작업 할 수 있습니다.