微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle将sysdate舍入到最接近的分钟点,该点可以被30整除

如何解决Oracle将sysdate舍入到最接近的分钟点,该点可以被30整除

我必须通过四舍五入到最接近的分钟数(可被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中获得预期的结果?

解决方法

这里的分钟逻辑

  • 获取分钟
  • 除以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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。