按小时对时间戳进行分组 SQLite

fin*_*col 8 sql sqlite group-by

我正在尝试按小时对数据类型为 TimeStamp 的时间戳列进行分组。

所以这适用于按天分组:

SELECT * FROM INFO
GROUP BY
DATE(timestamp)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下按小时分组的方法:

SELECT * FROM INFO
GROUP BY
HOUR(timestamp)
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:没有这样的功能:HOUR:

我见过类似的问题,但使用的是 DateTime,而不是 TimeStamp。

另外我想知道如何按任何时间段进行分组,例如按 24 小时、按 48 小时、按周等。

D-S*_*hih 15

SQLite中有一个方法strftime,通常group by将与聚合函数一起使用,例如(count,sum,avg ...)。

测试DLL

CREATE TABLE T(
  Id INT,
  `timestamp` timestamp
);

insert into t values (1,'2018-01-01 01:01:12');
insert into t values (2,'2018-01-01 02:02:12');
insert into t values (3,'2018-01-01 01:01:12');
Run Code Online (Sandbox Code Playgroud)

这是方法的示例strftime

询问

SELECT COUNT(Id),strftime ('%H',timestamp) hour
FROM T
GROUP BY strftime ('%H',timestamp)
Run Code Online (Sandbox Code Playgroud)

sqlfiddle