Oracle查询固定时间间隔

获取每一天

SELECT (trunc(to_date('2023-01-01','YYYY-MM-DD'), 'dd') + LEVEL -1) as DATA_TIME FROM dual CONNECT BY LEVEL <= 3;

Oracle查询固定时间间隔_第1张图片
解释:
这个 SQL 查询语句的目的是生成一个包含三个日期的结果集。查询的结果是从当前日期开始的三个连续日期。让我解释一下查询的各个部分:

  • trunc(to_date(‘2023-01-01’,‘YYYY-MM-DD’), ‘dd’) :这部分是取当前日期的零点,也就是将当前日期的时间部分截断,只保留日期部分。
  • +LEVEL - 1 :这部分是为了生成连续的日期序列。 LEVEL 是一个伪列,它在 CONNECT BY 子句中用于表示层级关系。通过 CONNECT BY LEVEL <= 3 ,我们指定了要生成三个层级的序列。
  • as DATA_TIME :这部分是给查询结果的日期列起了一个别名,别名为 DATA_TIME 。
  • LEVEL<=32460 : 这部分设置想要的个数。

获取每一分钟

SELECT TRUNC(to_date('2023-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'), 'MI') + (LEVEL - 1) / (24 * 60 ) AS DATA_TIME
FROM dual
CONNECT BY LEVEL <= 3;

Oracle查询固定时间间隔_第2张图片

获取每15分钟

SELECT TRUNC(to_date('2023-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'), 'MI') + (15 * (LEVEL - 1)) / (24 * 60) AS DATA_TIME
FROM dual
CONNECT BY LEVEL <= 3;

Oracle查询固定时间间隔_第3张图片
注意: 这里只是每个sql获取3个数,相同的,想要获取3天内的所有15分钟间隔的时间,那就需要给出这三天内有多少个间隔
例如:

SELECT TRUNC(to_date('2023-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'), 'MI') + (15 * (LEVEL - 1)) / (24 * 60) AS DATA_TIME
FROM dual
CONNECT BY LEVEL <= (3 * 24 * 60) / 15;

这个就是取得三天内,所有15分钟间隔的时间。
TRUNC函数的用法

你可能感兴趣的:(Oracle,oracle,数据库)