繁体   English   中英

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

[英]How to extract Hours and Minutes (from Date) as a number in Oracle?

我做了什么:

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

我得到了什么:

13:30

我想要的是 :

13.50

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

如果需要实际时间(而不仅仅是小时和分钟),则可以执行以下操作:

select ( sysdate - trunc(sysdate) ) * 24, sysdate
from dual;

如果您只想要几个小时和几分钟:

select extract(hour from current_timestamp) + extract(minute from current_timestamp) / 60
from dual

如果要用小数小时表示一天中的时间(小时,分钟和秒),则可以使用

( sysdate - trunc(sysdate) ) * 24

正如戈登已经显示的那样。

如果您想截断秒数,仅将小时和分钟转换为小时,则可以使用

( trunc(sysdate, 'mm') - trunc(sysdate) ) * 24

我们可以使用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演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM