创建带有不规则的日期/时间格式列的Hive表

时间:2019-05-27 13:40:51

标签: datetime hadoop hive hiveql simpledateformat

我必须从csv创建一个Hive表,其中两列的日期/时间字段格式如下:11/28/2018 8:35:23 PM或11/30/2018 5:02 :17 AM等。例如:

responseid        process_start             process_end                status

26                11/28/2018 8:35:23 PM     11/30/2018 5:02:17 AM      complete

我知道我可以先将这些字段创建为字符串,然后再执行以下操作:

insert into table newtable 
select process_start, from_unixtime(unix_timestamp(process_start, 'dd-MM-yyyy HH:mm:ss')) from oldtable;

但是我不太确定如何处理AMPM。我也不确定我是否正确使用insert into table语法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用SimpleDateFormat类文档作为格式参考。正确的格式是

'MM/dd/yyyy h:mm:ss a'

select from_unixtime(unix_timestamp('11/28/2018 8:35:23 PM', 'MM/dd/yyyy h:mm:ss a'))

返回:

2018-11-28 20:35:23

Insert into table像这样:

INSERT INTO TABLE newtable 
select responseid, 
       from_unixtime(unix_timestamp(process_start, 'MM/dd/yyyy h:mm:ss a')) process_start,
       from_unixtime(unix_timestamp(process_end, 'MM/dd/yyyy h:mm:ss a')) process_end, 
       status
  from oldtable;