2017-04-03 42 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,但可以在適當的位置乘以/除以1000來使用Unix時間。

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) 
...