毫秒不是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)
...