将分钟转换为HH24:MI格式

时间:2012-08-13 09:34:21

标签: oracle time

请帮助您将分钟转换为('HH24:MI')格式。

我得到的结果是整数,即分钟。那么,如何转换呢?

由于

3 个答案:

答案 0 :(得分: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 :(得分: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小时),这将会出现问题,但它可以为您提供一些东西。

分享并享受。

答案 2 :(得分: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;