Hive 如何将yyyy MM dd hh.MM.ss“中的日期字段转换为配置单元中的时间戳字段(yyyy MM dd hh:MM:ss)
我有一个来自db2源的日期字段,格式为yyyy-MM-dd-hh.MM.ss 如何实现它?您的源数据库在小时、分钟和秒之间有点。蜂巢支持:介于它们之间,如:yyyy-MM-dd HH:MM:ss 参考:Hive 如何将yyyy MM dd hh.MM.ss“中的日期字段转换为配置单元中的时间戳字段(yyyy MM dd hh:MM:ss),hive,unix-timestamp,Hive,Unix Timestamp,我有一个来自db2源的日期字段,格式为yyyy-MM-dd-hh.MM.ss 如何实现它?您的源数据库在小时、分钟和秒之间有点。蜂巢支持:介于它们之间,如:yyyy-MM-dd HH:MM:ss 参考: 您可以使用unix_timestamp和from_unixtime的组合,而不是当前使用的substr方法 select cast( from_unixtime( unix_timestamp('2017-08-31-12:24:48' ,
您可以使用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 |
+------------------------+--+
我试着用这个concatconcatsubstrdatefield,1,10',substrdatefield,12,26它工作得很好…但是当我用castcontconcatsubstrdatefield,1,10',substrdatefield,12,26作为时间戳给我空的时候…任何帮助都很感激。编辑你的问题并把你的代码放在那里它已经是hive的时间戳格式了,只需将数据类型保留为时间戳,就可以了。参考此文档中的时间戳:是的……我尝试过,但CAST-as-TIMESTAMP给出了空值。
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 |
+------------------------+--+