我有一个来自db2源的yyyy-MM-dd-hh.mm.ss格式的日期字段。我想加载到hive并转换为时间戳。
我如何实现它?
答案 0 :(得分:1)
您的源数据库在小时,分钟和秒之间有dot
。 Hive在它们之间支持:
,例如:yyyy-MM-dd HH:mm:ss
。
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_timestamp
和from_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 |
+------------------------+--+