Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中将小时和分钟(从日期)提取为数字?_Sql_Oracle - Fatal编程技术网

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

Sql 如何在Oracle中将小时和分钟(从日期)提取为数字?,sql,oracle,Sql,Oracle,我所做的: SELECT TO_CHAR(SYSDATE, 'HH24:MI') FROM dual; 我得到的是: 13:30 我想要的是: 13.50 我还尝试了提取功能,然后将小时和分钟相加,但仍然不起作用 如果您需要实际时间(不仅仅是小时和分钟),您可以执行以下操作: select ( sysdate - trunc(sysdate) ) * 24, sysdate from dual; 如果您只需要几小时和几分钟: select extract(hour from curren

我所做的:

SELECT TO_CHAR(SYSDATE, 'HH24:MI') FROM dual;
我得到的是:

13:30
我想要的是:

13.50

我还尝试了提取功能,然后将小时和分钟相加,但仍然不起作用

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

select ( sysdate - trunc(sysdate) ) * 24, sysdate
from dual;
如果您只需要几小时和几分钟:

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

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

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
戈登已经证明了这一点

如果要截断秒数,只需将小时和分钟转换为小时,则可以使用

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

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

( sysdate - trunc(sysdate) ) * 24
( trunc(sysdate, 'mm') - trunc(sysdate) ) * 24
戈登已经证明了这一点

如果要截断秒数,只需将小时和分钟转换为小时,则可以使用

( 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


以下是。

我们可以使用
提取()功能获取小时和分钟。请注意,这需要将日期转换为时间戳数据类型(或者在示例中使用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


这是。

所以你不是真的想要小时和分钟,你想要小时(包括小时的小数部分),对吗?你需要13.50格式还是13.5格式就足够了?所以你不是真的想要小时和分钟,而是想要小时(包括小时的小数部分),对吗?你是需要格式
13.50
还是will
13.5
就足够了?取整并不完全是OP所做的
TO_CHAR(…,'HH24:MI')
truncates,它不舍入。舍入并不完全是OP所做的
TO_CHAR(…,'HH24:MI')
truncates,它不舍入。