【问题标题】:Oracle rounding down sysdate to the nearest minute point that divisible by 30Oracle 将 sysdate 向下舍入到可被 30 整除的最接近的分钟点
【发布时间】:2020-10-14 02:56:45
【问题描述】:

我必须通过向下舍入到可被 30 整除的最接近的分钟点来转换 sysdate。例如:

If sysdate is between 2020-10-14 09:00:00 and 2020-10-14 09:29:59 then return 2020-10-14 09:00:00
If sysdate is between 2020-10-14 09:30:00 and 2020-10-14 09:59:59 then return 2020-10-14 09:30:00

如何在 Oracle 中获得预期结果?

【问题讨论】:

    标签: oracle datetime rounding sysdate


    【解决方案1】:

    这里的分钟逻辑

    • 获取会议记录
    • 除以 30 并截断(给出 0 或 1)
    • *30/1440 获得 0 或 30 分钟的一天

    然后添加到一天中的小时

    SQL> with d as
      2   ( select to_date('09:27','HH:MI') x from dual
      3     union all
      4     select to_date('09:37','HH:MI') x from dual
      5   )
      6  select x, trunc(x,'HH') + 30*trunc(to_number(to_char(x,'MI'))/30)/1440
      7  from d;
    
    X                   TRUNC(X,'HH')+30*TR
    ------------------- -------------------
    01/10/2020 09:27:00 01/10/2020 09:00:00
    01/10/2020 09:37:00 01/10/2020 09:30:00
    

    【讨论】:

    • 谢谢您,先生,这确实有效。
    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2013-07-15
    • 2021-11-12
    相关资源
    最近更新 更多