在PL / SQL中将epoch以毫秒转换为Date格式

时间:2017-05-04 15:26:44

标签: plsql epoch

我的表中有一列(Data_type Number(16,0)),它以毫秒为单位存储纪元时间。

例如: - 1491456096759

我想写一个select语句将其格式化为可读格式,其中包括毫秒'YYYY-MM-DD HH24:MI:SS.FF'。

我可以使用任何直接函数进行此转换吗?

我已经尝试过这个选项

  

select to_date('19700101', 'YYYYMMDD') + ( 1 / 24 / 60 / 60 / 1000) * 1491456096759 from dual;

但无法以'YYYY-MM-DD HH24:MI:SS.FF'格式打印该日期

1 个答案:

答案 0 :(得分:1)

请试试这个:

SELECT TO_TIMESTAMP('1970-01-01 00:00:00.0'
                   ,'YYYY-MM-DD HH24:MI:SS.FF'
       ) + NUMTODSINTERVAL(1493963084212/1000, 'SECOND')
FROM dual;

或者如果你想返回一个字符串:

SELECT TO_CHAR( 
         TO_TIMESTAMP('1970-01-01 00:00:00.0'
                     ,'YYYY-MM-DD HH24:MI:SS.FF'
         ) + NUMTODSINTERVAL(1493963084212/1000, 'SECOND')
        ,'YYYY-MM-DD HH24:MI:SS.FF')
FROM dual;