oracle查询将时间缩短到15分钟窗口

时间:2019-08-27 06:10:14

标签: oracle datetime

我有一个查询,将时间四舍五入到最近的15分钟窗口:

Select     Sysdate,
           Trunc (Sysdate) + ( Round ( (Sysdate - Trunc (Sysdate))* 96)/ 96)
FROM       dual;

但是,我不需要最近的窗口,而是较低的15分钟窗口。

例如1:

  

时间19:57:03
  以上查询输出20:00:00
  要求输出19:45:00

例如2:

  

时间17:18:00
  以上查询输出17:15:00
  所需的输出17:15:00

第二个示例是正确的,但第一个示例将其四舍五入为20:00。但是,我想查询输出第一个示例的19:45

2 个答案:

答案 0 :(得分:0)

FLOOR函数之后,您只需要一个ROUND函数-

Select SYSDATE,
       TRUNC(SYSDATE) + (ROUND(FLOOR((SYSDATE - TRUNC (SYSDATE))* 96))/ 96)
FROM DUAL;

Here是小提琴。

答案 1 :(得分:0)

您可以使用FloorCeil概念。

Select     Sysdate,
           Trunc (Sysdate) + ( Round (floor(Sysdate - Trunc (Sysdate))* 96)/ 96)
FROM       dual;

作为参考,请访问Here