【问题标题】:Round up SYSDATE just but its HOUR. SQL ORACLE仅将 SYSDATE 舍入,但它的 HOUR。 SQL 甲骨文
【发布时间】:2016-04-07 04:48:01
【问题描述】:

关于如何四舍五入 SYSDATE 的任何想法。

例如,现在的 sysdate 是 11.31,我希望它向上舍入到 12.00,但我希望输出只是 12,如果 Sysdate 是 11.29,则输出是11.

谢谢

【问题讨论】:

  • 所以你想四舍五入到下一个小时 - 只有当你超过 30 分钟时?
  • @Hogan 没错。第 30 分钟后向上取整

标签: sql oracle time sysdate


【解决方案1】:
ROUND((SYSDATE-TRUNC(SYSDATE))*24)

解释:TRUNC 不带第二个参数使当前日期的时间为 00:00:00。通过减法,我们得到差异(以天为单位),然后将其缩放到小时和四舍五入。

【讨论】:

  • @MarioAlexander 23:31 将产生 24 而不是 00。
【解决方案2】:

使用ROUND 函数,然后使用TO_CHAR

select to_char(round(to_date('11:31','hh24:mi'), 'HH'), 'HH24') from dual

-> 12

select to_char(round(to_date('11:29','hh24:mi'), 'HH'), 'HH24') from dual

-> 11

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多