2017-04-03 12 views
0

に応じてカウントがここに私のsqliteのテーブルがあります:過去7日間のデータを取得し、挿入された行とデータを取得日

 
TimeStamp | Counter 
--------- | -------- 
(in ms)  ... 

そして、私はこの

 
| Day | Sum(Counter) | 
---------------------- 
|Monday|10   | 
|Tuesday| 20   | 
+0

タイムスタンプ値の形式は何ですか? –

+0

ミリ秒単位です – Akshat

+0

タイムゾーンの日数は? UTCまたはローカル? –

答えて

0

ミリ秒のようなものを引き起こすたいことの一つではありませんSQLite's supported date formatsがありますが、適切な場所でUnix Timeを1000倍することで使用できます。これらの修飾子とSQLiteの、date function

は、ローカルタイムゾーンの現在の日の開始を返します。

datetime('now', 'localtime', 'start of day') 

代わりstrftimeを使用し、ミリ秒にこれを変換するには:

SELECT ... 
FROM MyTable 
WHERE TimeStamp >= strftime('%s', 'now', 'localtime', 'start of day', '-7 days') * 1000 
... 

へタイムスタンプの日を取得するには、もう一度strftimeを使用する必要があります。

SELECT strftime('%w', TimeStamp/1000, 'unixepoch', 'localtime') AS Day, 
     sum(Counter) 
FROM MyTable 
WHERE TimeStamp >= strftime('%s', 'now', 'localtime', 'start of day', '-7 days') * 1000 
GROUP BY 1; 

あなたがCASE expressionを使用し、代わりに一日数の曜日名を使用する場合:

SELECT CASE strftime('%w', TimeStamp/1000, 'unixepoch', 'localtime') 
     WHEN '0' THEN 'Sunday' 
     WHEN '1' THEN 'Monday' 
     ... 
     END AS Day, 
     sum(Counter) 
... 
関連する問題