SQL选择和分组一段时间(时间戳)

Ray*_*non 6 sql oracle select group-by count


我想按一段时间(月,周,日,小时......)选择计数和组.因此,例如,我想选择行数并将它们分组24小时.
我的表创建如下.日期是时间戳.

CREATE TABLE MSG
(
   MSG_ID decimal(22) PRIMARY KEY NOT NULL,
   MSG_DATE timestamp,
   FILE_REF varchar2(32),
   FILE_NAME varchar2(64),
   MSG_TYPE varchar2(2),
);
CREATE UNIQUE INDEX PK_FEI_MSG ON MSG(MSG_ID);
Run Code Online (Sandbox Code Playgroud)


我试过这个查询.长度取决于时间段.但是我怎么能从现在开始分组.

SELECT substr(MSG_DATE, 1,length),COUNT(*) as total FROM MSG GROUP BY substr(MSG_DATE, 1, length)
Run Code Online (Sandbox Code Playgroud)


但是如何将日期分组从现在起+ time_period?

Ron*_*nis 23

您可以通过TO_CHAR功能进行分组.

select to_char(msg_date, 'X')
      ,count(*)
  from msg
 group 
    by to_char(msg_date, 'X')
Run Code Online (Sandbox Code Playgroud)

...其中X是格式规范:

  • YYYY = 4位数年份
  • MM =一年中的一个月
  • DD =每月的日子
  • WW =周
  • HH24 =一天中的小时

你可以随意组合它们