PL / SQL:TO_CHAR显示格式

时间:2014-03-06 18:38:35

标签: 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功能,但它接受严格的预设格式。

1 个答案:

答案 0 :(得分:1)

几个例子 - 复制,粘贴以查看输出:

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
      ))
     /