PLSQL - 将精度为毫秒的unix时间戳转换为时间戳(6)

时间:2018-04-30 20:30:00

标签: sql oracle timestamp unix-timestamp

我有一个具有毫秒精度的unix timstamp,如下所示:

1523572200000

我需要将其转换为时间戳(6)。这是我需要的格式:

05-NOV-14 09.45.00.000000000 AM

(以上Fyi示例不匹配日期,仅使用示例。)

最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

以下内容可能对您有用(其中myunixtimestamp是存储Unix时间戳的列的名称):

SELECT TIMESTAMP'1970-01-01 00:00:00.000' + NUMTODSINTERVAL(myunixtimestamp/1000, 'SECOND')
  FROM mytable;

例如,

SELECT TIMESTAMP'1970-01-01 00:00:00.000' + NUMTODSINTERVAL(1523572200000/1000, 'SECOND')
  FROM dual;

结果为2018-04-12 10:30:00.000000000 PM

希望这有帮助。

答案 1 :(得分:0)

假设当前时间戳为:1523572200000,请尝试以下操作:

select cast (to_date('1970-01-01', 'YYYY-MM-DD') + 1523572200000/1000/60/60/24 as timestamp) from dual;

其中:

  • to_date('1970-01-01', 'YYYY-MM-DD')是纪元时间
  • <unix_timestamp>/60/60/24被分为1000毫秒60秒和60分钟24小时,因为在oracle我们正在添加