[英]How to convert milliseconds to Time(hh:mm:ss) in Oracle
我想將PL / SQL毫秒轉換為Time(hh:mm:ss)
21649000
至06:00:49
要么
83293000
至23:08:13
將NUMTODSINTERVAL
與SECOND
選項一起使用:
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.