【问题标题】:Converting Unix epoch time to extended ISO8601将 Unix 纪元时间转换为扩展的 ISO8601
【发布时间】:2017-08-13 03:43:30
【问题描述】:

我有 3 个表我想使用日期来处理,但是其中一个表包含 unix 纪元格式的日期。以下是 3 个字段的示例:

Table1: 2017-02-01T07:58:40.756031Z
Table2: 2017-02-07T10:16:46Z
Table3: 1489236559

我想将表 3 中的日期转换为尽可能接近表 2 的格式。这就是我现在拥有的:

SELECT cast(from_unixtime(tstart) as timestamp) as ISODATE from scada_logs

这给了我一些非常接近的东西,但并不完全在那里。这是我得到的:

ISODATE
2017-03-20 14:31:06.000
2017-03-20 14:31:06.000

我已经玩了几个小时了,但我没有更进一步。有人有什么想法吗?

谢谢!

【问题讨论】:

    标签: datetime hadoop presto amazon-athena


    【解决方案1】:

    选项 1:日期格式

    presto> select date_format(from_unixtime(1489236559),'%Y-%m-%dT%H:%i:%sZ');
            _col0
    ----------------------
     2017-03-11T12:49:19Z
    

    选项 2:to_iso8601

    presto> select to_iso8601(from_unixtime(1489236559));
              _col0
    --------------------------
     2017-03-11T12:49:19.000Z
    

    【讨论】:

    • 不幸的是,这对我不起作用,我收到一个错误:SYNTAX_ERROR: line 1:33: Column 'yyyy-mm-dd't'hh:mm:ss'z'' cannot be解决。这实际上是在使用 Hive 的 AWS Athena 上。也许它是一个非标准版本?
    • 实际上 AWS Athena 使用的是 prestodb 而不是 hiveql。查看更新的答案
    • 对于不支持 date_format(即 V1.2 之前)的旧 Hive 版本,您仍然可以使用旧的 printf...cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
    • @SamsonScharfrichter - AWS Athena 使用 presto,而不是 HiveQL
    猜你喜欢
    • 2017-12-20
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2015-07-08
    • 1970-01-01
    • 2016-09-15
    相关资源
    最近更新 更多