3

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

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

谢谢

4

3 回答 3

6

假设,您要转换 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;
/
于 2012-08-13T09:36:46.277 回答
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 小时),这会出现问题,但它会给你一些开始的东西。

分享和享受。

于 2012-08-13T11:51:28.293 回答
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;
于 2016-10-17T19:19:22.147 回答