2012-08-13 128 views

回答

4

假設,你要492分鐘轉換:如果你想有一個功能

select to_char(trunc(sysdate) + 492/24/60, 'hh24:mi') from dual; 

create or replace 
    function tq84_convert_minutes_hh24mm (p_minutes in number) 
    return varchar2 is 
begin 

    return to_char (trunc(sysdate) + p_minutes/24/60, 'hh24:mi'); 

end tq84_convert_minutes_hh24mm; 
/

後來......

begin 
    dbms_output.put_line (tq84_convert_minutes_hh24mm(492)); 
end; 
/
1

另一個方式:

WITH c AS 
    (SELECT 492 AS MINUTES FROM DUAL) 
SELECT TRIM(TO_CHAR(TRUNC(MINUTES/60), '09')) || ':' || 
     TRIM(TO_CHAR(TRUNC(MOD(ABS(MINUTES), 60)), '09')) AS HHMM 
    FROM C 

如果時間超過1440分鐘(24小時),這會產生問題,但它給你一些啓動。

分享和享受。

1

這可以節省您,但是我的時間超過了1440分鐘。

select to_char(trunc(sysdate) + [MINUTES]/24/60, 'hh24:mi') from dual; 

所以我做了驗證,如果分大於或等於1440的功能:

IF (QT_MINUTES_P IS NOT NULL) THEN 
    IF (QT_MINUTES_P >= 1440) THEN 
     SELECT ROUND(QT_MINUTES_P/ 60) ||':'|| MOD(QT_MINUTES_P, 60) 
     INTO DS_RESULT 
     FROM DUAL; 
    ELSE 
     SELECT TO_CHAR(TRUNC(SYSDATE) + (QT_MINUTES_P)/24/60, 'hh24:mi') 
     INTO DS_RESULT 
     FROM DUAL; 
    END IF; 
END IF;