如何将yyyy-MM-dd-hh.mm.ss中的日期字段转换为Hive中的Timestamp字段(yyyy-MM-dd hh:mm:ss)

时间:2018-01-17 00:15:59

标签: hive unix-timestamp

我有一个来自db2源的yyyy-MM-dd-hh.mm.ss格式的日期字段。我想加载到hive并转换为时间戳。

我如何实现它?

2 个答案:

答案 0 :(得分:1)

您的源数据库在小时,分钟和秒之间有dot。 Hive在它们之间支持:,例如:yyyy-MM-dd HH:mm:ss

参考:Hive Date Functions

select
cast(
  concat(
    substr('2015-07-22-09.00.32',1,10), ' ', 
    substr('2015-07-22-09.00.32',12,2), ':', 
    substr('2015-07-22-09.00.32',15,2), ':', 
    substr('2015-07-22-09.00.32',18,2)
  ) AS TIMESTAMP
)
;

答案 1 :(得分:0)

您可以使用unix_timestampfrom_unixtime的组合代替您当前使用的substr方法。

select cast( 
           from_unixtime(
                unix_timestamp('2017-08-31-12:24:48' , 'yyyy-MM-dd-HH:mm:ss') 
           )
        as timestamp
);

+------------------------+--+
|          _c0           |
+------------------------+--+
| 2017-08-31 12:24:48.0  |
+------------------------+--+