这是我的sqlite表:
TimeStamp | Counter --------- | -------- (in ms) ...
我希望结果像这样
| Day | Sum(Counter) | ---------------------- |Monday|10 | |Tuesday| 20 |
答案 0 :(得分: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)
...