如何将 yyyy-MM-dd-hh.mm.ss” 中的日期字段转换为 Hive 中的时间戳字段 (yyyy-MM-dd hh:mm:ss)
How to Convert date field in yyyy-MM-dd-hh.mm.ss” to Timestamp field(yyyy-MM-dd hh:mm:ss) in Hive)
我有一个格式为 yyyy-MM-dd-hh.mm.ss 的日期字段,来自 db2 source.I 想要加载到配置单元并转换为时间戳。
如何实现?
您的源数据库在小时、分钟和秒之间有 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
)
;
您可以使用 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 |
+------------------------+--+
我有一个格式为 yyyy-MM-dd-hh.mm.ss 的日期字段,来自 db2 source.I 想要加载到配置单元并转换为时间戳。
如何实现?
您的源数据库在小时、分钟和秒之间有 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
)
;
您可以使用 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 |
+------------------------+--+