我正在编写一个SQL查询,将我的时间戳列中的一个分类为15分钟桶。我做了一些研究,并尝试了多种方法,但我没有得到预期的结果。
SELECT
dd,
trunc(dd) + ROUND(TO_CHAR(dd,'SS')/900)/96 as round_1,
trunc(dd, 'hh24') + ROUND(to_char(dd, 'MI')/15)*15/1440 as round_2,
trunc(dd, 'mi') - mod(EXTRACT(minute FROM cast(dd as timestamp)), 15) / (24 * 60) as round_3,
to_char(trunc(dd,'hh') + (15*round(to_char(trunc(dd,'MI'),'MI')/15))/1440,'YYYY-MM-DD hh24:mi:ss') as round_4
FROM
Table 当我执行上述查询时,我会看到以下结果。

预期结果是

*编辑,根据戈登的答复更新问题
发布于 2020-10-22 16:45:56
Oracle没有datetime数据类型。如果列是时间戳(如代码所示),则可以使用以下逻辑:
select trunc(current_timestamp, 'HH24') + floor(extract(minute from current_timestamp) / 4) * interval '15' minute
from dualhttps://stackoverflow.com/questions/64486716
复制相似问题