【问题标题】:Converting bigint to timestamp in presto在 presto 中将 bigint 转换为时间戳
【发布时间】:2018-10-07 14:28:03
【问题描述】:

我的数据集中有一个数据类型为 bigint 的列:

Col1     Col2
   1     1519778444938790
   2     1520563808877450
   3     1519880608427160
   4     1520319586578960
   5     1519999133096120

如何将 Col2 转换为以下格式:

年月日时:分:秒

我不确定当前列的格式是什么,但我知道它应该是时间戳。

任何帮助都会很棒,谢谢!

【问题讨论】:

    标签: date time timestamp bigint presto


    【解决方案1】:

    您是否尝试过使用from_unixtime 之类的功能?您可以使用它将 unix 时间转换为时间戳,然后您可以使用 date_format 以您想要的方式显示它。请注意,在您的示例中,您的 unix 时间以微秒为单位,因此您可能希望先将其转换为毫秒。

    我尚未对此进行测试,但我假设您的代码应如下所示:

    date_format(from_unixtime(col2/1000), '%Y-%m-%d %h:%i:%s')
    

    注意from_unixtime 也接受时区。

    请访问此页面以查看有关日期相关功能的更多详细信息:https://docs.starburstdata.com/latest/functions/datetime.html

    【讨论】:

      【解决方案2】:

      我认为分母应该是 1000000 而不是 1000。可能是错字。无论如何,这里只是添加测试结果供其他人参考。

      -- 微秒

      select date_format(from_unixtime(cast('1519778444938790' as bigint)/1000000), '%Y-%m-%d %h:%i:%s');
      

      2018-02-28 12:40:44

      【讨论】:

        猜你喜欢
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 2018-03-03
        • 2018-04-03
        • 2021-12-22
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        相关资源
        最近更新 更多