如何在 Oracle 中将小时和分钟(从日期)提取为数字?

新手上路,请多包涵

我做了什么:

 SELECT TO_CHAR(SYSDATE, 'HH24:MI') FROM dual;

我得到了什么:

 13:30

我想要的是 :

 13.50

我还尝试了 EXTRACT 函数,然后将小时和分钟相加,但仍然无法正常工作。

原文由 dwalker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 939
1 个回答

我们可以使用 extract() 功能来获取小时和分钟。请注意,这需要将日期转换为时间戳数据类型(或在您的示例中使用 systimestamp)。

一旦你有了小时和分钟,你就可以对它们进行算术运算并格式化它们以满足你的需要。例如:

 with cte as (
    select to_timestamp('2018-03-31 13:30:00', 'yyyy-mm-dd hh24:mi:ss') as dt
    from dual
) ,  tt as (
    select extract(hour from dt) as hr
           , round(extract(minute from dt)/60,2) as mn
    from cte
)
select to_char(hr,'09')||trim(to_char(mn,'.00')) as your_time
from tt
/

…将显示 13.50

这是 为您准备的 SQL Fiddle 演示

原文由 APC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进