【问题标题】:Convert a string of ISO8601 datetime format to timestamp in Impala在 Impala 中将 ISO8601 日期时间格式的字符串转换为时间戳
【发布时间】:2016-12-15 16:23:36
【问题描述】:

我有一个格式为:yyyy-MM-dd'T'HH:mm:ss.SSSXXX(即:2016-12-11T14:21:04.354-08:00)的字符串,我想将其转换为时间戳。 我试过了:unix_timestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss.SSSXXX") 但它会抛出:WARNINGS: Bad date/time conversion format: yyyy-MM-ddHH:mm:ss.SSSXXX

    Query: select unix_timestamp('2016-12-11T14:21:04.354-08:00', "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
WARNINGS: Bad date/time conversion format: yyyy-MM-ddHH:mm:ss.SSSXXX

Bad date/time conversion format: yyyy-MM-ddHH:mm:ss.SSSXXX

【问题讨论】:

  • 使用相同的统计数据。没有错误或警告(使用 Hive 1.2.1000.2.4.0.0-169) 选择不同的 unix_timestamp('2016-12-11T14:21:04.354-08:00',"yyyy-MM- dd'T'HH:mm: ss.SSSXXX") 来自 tab1;我的输出 1481494864
  • 我使用黑斑羚。我会改正的

标签: date datetime hive impala iso8601


【解决方案1】:
select from_unixtime( unix_timestamp( 
  concat(substr('2016-12-11T14:21:04.354-05:00', 1, 26), '00'), 'yyyy-MM-dd\'T\'HH:mm:ss.SSSZ'), 'yyyy-MM-dd HH:mm:ss Z');

0: jdbc:hive2://localhost:10000/default> select from_unixtime( unix_timestamp( concat(substr('2016-12-11T14:21:04.354-05:00', 1, 26), '00'), 'yyyy-MM-dd\'T\'HH:mm:ss.SSSZ'), 'yyyy-MM-dd HH:mm:ss Z');
INFO  : Compiling command(queryId=hive_20170307142929_85757745-69f9-46b8-bbaf-9a2b9d0d8904): select from_unixtime( unix_timestamp( concat(substr('2016-12-11T14:21:04.354-05:00', 1, 26), '00'), 'yyyy-MM-dd\'T\'HH:mm:ss.SSSZ'), 'yyyy-MM-dd HH:mm:ss Z')
INFO  : OK
+----------------------------+--+
|            _c0             |
+----------------------------+--+
| 2016-12-12 03:21:04 +0800  |
+----------------------------+--+
1 row selected (1.416 seconds)

【讨论】:

    【解决方案2】:

    对于 Impala,您的时间格式字符串应如下所示:'yyyy-mm-ddthh:mm:ss.sss-hh:mm'

    看这个例子:

    [localhost:21000] > select unix_timestamp('2016-12-11T14:21:04.354-05:00', "yyyy-MM-ddTHH:mm:ss.SSS-hh:mm");
    Query: select unix_timestamp('2016-12-11T14:21:04.354-05:00', "yyyy-MM-ddTHH:mm:ss.SSS-hh:mm")
    Query submitted at: 2016-12-21 00:49:48 (Coordinator: http://lv-desktop:25000)
    Query progress can be monitored at: http://lv-desktop:25000/query_plan?query_id=564166231bc9fd4d:36e038bd00000000
    +----------------------------------------------------------------------------------+
    | unix_timestamp('2016-12-11t14:21:04.354-05:00', 'yyyy-mm-ddthh:mm:ss.sss-hh:mm') |
    +----------------------------------------------------------------------------------+
    | 1481484064                                                                       |
    +----------------------------------------------------------------------------------+
    Fetched 1 row(s) in 0.01s
    [localhost:21000] > select unix_timestamp('2016-12-11T14:21:04.354-08:00', "yyyy-MM-ddTHH:mm:ss.SSS-hh:mm");
    Query: select unix_timestamp('2016-12-11T14:21:04.354-08:00', "yyyy-MM-ddTHH:mm:ss.SSS-hh:mm")
    Query submitted at: 2016-12-21 00:49:56 (Coordinator: http://lv-desktop:25000)
    Query progress can be monitored at: http://lv-desktop:25000/query_plan?query_id=484ba21cc5d78ff8:e8d8353a00000000
    +----------------------------------------------------------------------------------+
    | unix_timestamp('2016-12-11t14:21:04.354-08:00', 'yyyy-mm-ddthh:mm:ss.sss-hh:mm') |
    +----------------------------------------------------------------------------------+
    | 1481494864                                                                       |
    +----------------------------------------------------------------------------------+
    Fetched 1 row(s) in 0.01s
    [localhost:21000] >
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多