Hive 如何将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' ,

我有一个来自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' , '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  |
+------------------------+--+