【问题标题】:PLSQL - convert unix timestamp with millsecond precision to timestamp(6)PLSQL - 将毫秒精度的 unix 时间戳转换为时间戳(6)
【发布时间】:2018-10-10 23:26:24
【问题描述】:

我有一个毫秒精度的 unix 时间戳,如下所示:

1523572200000

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

05-NOV-14 09.45.00.000000000 AM

(以上仅供参考的示例不匹配日期,仅用作示例。)

最好的方法是什么?

谢谢!

【问题讨论】:

    标签: sql oracle timestamp unix-timestamp


    【解决方案1】:

    假设当前时间戳为: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 中我们要添加 days

    【讨论】:

      【解决方案2】:

      以下可能对您有用(其中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的结果。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-30
        • 2016-03-04
        • 2016-03-04
        • 2013-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多