PLSQL - 将毫秒精度的 unix 时间戳转换为时间戳(6)
PLSQL - convert unix timestamp with millsecond precision to timestamp(6)
我有一个精度为毫秒的 unix 时间戳,如下所示:
1523572200000
我需要将其转换为时间戳(6)。这是我需要的格式:
05-NOV-14 09.45.00.000000000 AM
(仅供参考,上面的例子不是匹配日期,只是作为例子。)
解决此问题的最佳方法是什么?
谢谢!
假设当前时间戳为: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 中我们添加 天
以下内容可能对您有用(其中 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
的结果。
希望对您有所帮助。
我有一个精度为毫秒的 unix 时间戳,如下所示:
1523572200000
我需要将其转换为时间戳(6)。这是我需要的格式:
05-NOV-14 09.45.00.000000000 AM
(仅供参考,上面的例子不是匹配日期,只是作为例子。)
解决此问题的最佳方法是什么?
谢谢!
假设当前时间戳为: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 中我们添加 天
以下内容可能对您有用(其中 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
的结果。
希望对您有所帮助。