【问题标题】:get data from last 7 days and get rows and data inserted count according to day获取最近 7 天的数据并根据天获取行和插入的数据计数
【发布时间】:2017-08-27 22:47:29
【问题描述】:

这是我的 sqlite 表:

时间戳 |柜台 --------- | -------- (以毫秒为单位)...

我想要这样的结果

|天 |总和(计数器) | ---------------------- |星期一|10 | |星期二| 20 |

【问题讨论】:

  • 时间戳值的格式是什么?
  • 以毫秒为单位
  • 哪个时区的天数? UTC 还是本地?
  • 当地时区的天数

标签: android sqlite aggregate-functions


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多