Oracle PL/SQL:TO_CHAR show格式
我这里有一个代码:Oracle PL/SQL:TO_CHAR show格式,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,我这里有一个代码: create or replace FUNCTION calc_length( START_TIME IN number, FINISH_TIME IN number ) RETURN NUMBER IS BEGIN RETURN ( (FINISH_TIME - START_TIME ) ; END 我想以H:mm 我尝试了TO_CHAR函数,但它接受严格的预设格式。少数示例-复制、粘贴以查看oputput: SELECT trunc(mydate
create or replace FUNCTION calc_length(
START_TIME IN number,
FINISH_TIME IN number
) RETURN NUMBER IS
BEGIN
RETURN ( (FINISH_TIME - START_TIME ) ;
END
我想以H:mm
我尝试了
TO_CHAR
函数,但它接受严格的预设格式。少数示例-复制、粘贴以查看oputput:
SELECT trunc(mydate / 3600) hr
, trunc(mod(mydate, 3600) / 60) mnt
, trunc(mod(mydate, 3600) / 60 /60) sec
FROM
(
SELECT (to_date('01/02/2013 23:00:00', 'mm/dd/yyyy hh24:mi:ss') -
to_date('01/01/2013 07:00:00', 'mm/dd/yyyy hh24:mi:ss')) * 86400 mydate
FROM dual
)
/
Select hh, mi, ss From
(
Select EXTRACT(hour From Cast(SYSDATE as timestamp)) hh,
EXTRACT(minute From Cast(SYSDATE as timestamp)) mi,
EXTRACT(second From Cast(SYSDATE as timestamp)) ss
From dual
)
/
Select start_date, end_date, time_diff,
EXTRACT(DAY FROM time_diff) days,
EXTRACT(HOUR FROM time_diff) hours,
EXTRACT(MINUTE FROM time_diff) minutes,
EXTRACT(SECOND FROM time_diff) seconds
From
(
Select start_date, end_date, end_date - start_date time_diff
From
(
Select CAST(to_date('21/02/2012 06:10:53 am', 'dd/mm/yyyy hh:mi:ss am') AS TIMESTAMP) end_date
, CAST(to_date('21/02/2012 12:05:00 am', 'dd/mm/yyyy hh:mi:ss am') AS TIMESTAMP) start_date
From dual
))
/
初始时间精度是多少?这些开始时间和结束时间是以小时、分、秒或天的形式传递到您的过程中的吗?一旦你决定了时间的精确性,算法就会变得非常简单。此外,为什么不使用
日期
或时间戳
数据类型的值呢?@NicholasKrasnov让我们假设开始时间是1205,结束时间是1355,这样我会得到150的差值,代表1h50。你没有回答我关于start\u time
和end\u time
代表什么的问题。但从你的例子来看,1355是13小时55分钟,1205是12小时05分钟。问题是在这种情况下,end\u time
和start\u time
之间的差异不应该是1小时30分钟而不是1小时50分钟吗?否则。。。。奇怪的算术。@NicholasKrasnov我的同位语!数值采用NUMBER
格式,因此1215
代表12:15,1355
代表13:55。问题是,如果我将结束时间-开始时间的结果乘以0.01
,那么我得到的时间格式是小时.分钟
我将如何在小数点之间分割值之前的值,所以如果我得到2.25
我将它们分割为2
和25