问题陈述:我的查询返回的数据有created_date
,这意味着记录何时被创建。这列是一个日期类型,结果中包含小时。
我想发布按日期分组的数据,按小时分布。
样品结果:
目前我正在使用以下查询获取按天计算的分布,
SELECT TRUNC(CREATED_DATE),COUNT(*) FROM IMAGE_HISTORY
WHERE CREATED_DATE >= SYSDATE-7
GROUP BY TRUNC(CREATED_DATE)
ORDER BY TRUNC(CREATED_DATE) ASC
结果:
2条答案
按热度按时间ih99xse11#
你可以使用
TRUNC(CREATED_DATE, 'HH')
在几小时后截断所有内容,如下所示:0yg35tkg2#
如果你想要的是一天中按小时分组(例如,结果中最多有24行),那么使用
TO_CHAR
而不是TRUNC
:TO_CHAR
使用指定的模式格式化字符串,因此如果指定 only hours(HH
或HH24
),则将得到所有内容。没有day,只有hour(作为字符串)。但如果你想记录每一天每一小时(7*24 = 168行),那么
TRUNC(CREATED_DATE,'HH')
是正确的。TRUNC
将低于指定掩码的时间部分归零,并将结果作为日期返回。可以将其视为“向下舍入到最近的X”。我想你也可以这样做TO_CHAR(CREATE_DATE,'YYYY-MM-DD HH24')
,但字符串不如真实的日期可取,因此,如果您希望保留日期,TRUNC
方法是首选。