簡體   English   中英

如何在Oracle中將毫秒轉換為時間(hh:mm:ss)

[英]How to convert milliseconds to Time(hh:mm:ss) in Oracle

我想將PL / SQL毫秒轉換為Time(hh:mm:ss)

2164900006:00:49

要么

8329300023:08:13

NUMTODSINTERVALSECOND選項一起使用:

select NUMTODSINTERVAL( 83293000 / 1000, 'SECOND' ) "Time" from dual t;

Time
-------------------
+000000000 23:08:13

這是一種不言自明的方式:

select val,
       floor(     val / 1000 / 60 / 60       ) as hours,
       floor( mod(val / 1000 / 60      , 60) ) as minutes,
       floor( mod(val / 1000           , 60) ) as seconds
from (
        select 21649000 val from dual union 
        select 83293000 val from dual
     )

       VAL      HOURS    MINUTES    SECONDS
---------- ---------- ---------- ----------
  21649000          6          0         49
  83293000         23          8         13

這不能處理幾天,因此毫秒數必須少於24小時。 這給出了數字,您可以按照獲取所需輸出格式/類型的方式對其進行編輯。

如果只希望第二精度,則可以將數字除以1000得到秒,然后除以86400以得到一天的一小部分,然后將其除以任何標稱日期的午夜-並將結果轉換為字符串:

select to_char(date '1970-01-01' + (21649000/86400000), 'HH24:MI:SS') as time
from dual;

TIME    
--------
06:00:49

select to_char(date '1970-01-01' + (83293000/86400000), 'HH24:MI:SS') as time
from dual;

TIME    
--------
23:08:13

這僅適用於小於一天的值,即原始數字小於86400000的值; 高於此價位,您僅會在第二天看到剩菜剩飯。

以下查詢對我有用,可以將毫秒轉換為HH:MM:SS

SELECT
TO_CHAR(TRUNC([ColumnName]/3600000),'FM9900') || ':' ||
TO_CHAR(TRUNC(MOD([ColumnName],3600000)/60000),'FM00') || ':' ||
TO_CHAR( trunc(MOD([ColumnName],60000)/1000),'FM00') FROM [TableName]`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM