当前位置: 代码迷 >> Oracle技术 >> oracle 把整数转换成固定格式的日期,多谢
  详细解决方案

oracle 把整数转换成固定格式的日期,多谢

热度:262   发布时间:2016-04-24 08:41:08.0
oracle 把整数转换成固定格式的日期,谢谢
比如 39884是一个整数,怎么把它转换成:几天几小时几分钟几秒这样的格式.如:10天10小时10分10秒。谢谢大家

------解决方案--------------------
楼上的,应该用TURNC+MOD来实现吧
------解决方案--------------------
呃,这个怎么样?
SQL code
SELECT    TRUNC (139884 / (60 * 60 * 24), 0)       || '天'       || MOD (TRUNC (139884 / (60 * 60), 0), 24)       || '时'       || MOD (TRUNC (139884 / 60, 0), 60)       || '分'       || MOD (TRUNC (139884 / 1, 0), 60)       || '秒' AS TIME  FROM DUAL;
------解决方案--------------------
SQL code
-- TRY IT ..SQL> SELECT 10*24*60*60 + 10*60*60 + 10*60 + 10 TOTAL_SECOND_DAY,  2         11*60*60 + 12*60 + 18 TOTAL_SECOND_HOUR,  3         8*60 + 6 TOTAL_SECOND_MINUTE,  4         26 TOTAL_SECONDS  5    FROM DUAL;TOTAL_SECOND_DAY TOTAL_SECOND_HOUR TOTAL_SECOND_MINUTE TOTAL_SECONDS---------------- ----------------- ------------------- -------------          900610             40338                 486            26SQL> SELECT CASE  2           WHEN NUM >= 1 AND NUM < 60 -- SECOND  3            THEN  4            NUM || ' sens'  5           WHEN NUM >= 60 AND NUM < 60 * 60 -- MINUTE  6            THEN  7            TRUNC(NUM / 60) || ' mins :' || (NUM - (60 * TRUNC(NUM / 60))) ||  8            ' sens'  9           WHEN NUM >= 60 * 60 AND NUM < 24 * 60 * 60 -- HOURS 10            THEN 11            TRUNC(NUM / (60 * 60)) || ' hours :' || 12            TRUNC((NUM - (60 * 60 * TRUNC(NUM / (60 * 60)))) / 60) || 13            ' mins :' || 14            (NUM - (60 * 60 * TRUNC(NUM / (60 * 60))) - 15             (60 * TRUNC((NUM - (60 * 60 * TRUNC(NUM / (60 * 60)))) / 60))) || 16            ' sens' 17           WHEN NUM >= 24 * 60 * 60 -- DAYS 18            THEN 19            TRUNC(NUM / (24 * 60 * 60)) || ' days :' || 20            TRUNC((NUM - (24 * 60 * 60 * TRUNC(NUM / (24 * 60 * 60)))) / 21                  (60 * 60)) || ' hours :' || 22            TRUNC((NUM - (24 * 60 * 60 * TRUNC(NUM / (24 * 60 * 60))) - 23                  (60 * 60 * 24                  TRUNC((NUM - (24 * 60 * 60 * TRUNC(NUM / (24 * 60 * 60)))) / 25                          (60 * 60)))) / 60) || 'mins :' || 26            (NUM - (24 * 60 * 60 * TRUNC(NUM / (24 * 60 * 60))) - 27             (60 * 60 * 28             TRUNC((NUM - (24 * 60 * 60 * TRUNC(NUM / (24 * 60 * 60)))) / 29                    (60 * 60))) - 30             (60 * TRUNC((NUM - (24 * 60 * 60 * TRUNC(NUM / (24 * 60 * 60))) - 31                         (60 * 60 * TRUNC((NUM - (24 * 60 * 60 * 32                                           TRUNC(NUM / (24 * 60 * 60)))) / 33                                           (60 * 60)))) / 60))) || ' sens' 34         END DAY_TIME 35    FROM (SELECT 900610 NUM 36            FROM DUAL 37          UNION ALL 38          SELECT 40338 NUM 39            FROM DUAL 40          UNION ALL 41          SELECT 486 NUM 42            FROM DUAL 43          UNION ALL 44          SELECT 26 NUM FROM DUAL);DAY_TIME--------------------------------------------10 days :10 hours :10mins :10 sens11 hours :12 mins :18 sens8 mins :6 sens26 sens
------解决方案--------------------
select to_timestamp(sysdate+39884/24/60/60)-to_timestamp(sysdate) from dual;
  相关解决方案