Создание таблицы Hive с неправильным столбцом формата даты / времени - PullRequest
2 голосов
/ 27 мая 2019

Мне нужно создать таблицу Hive из CSV, и два столбца имеют поле даты / времени, которое отформатировано следующим образом: 28.11.2008 20:35:23 или 30.11.2008 5:02 : 17:00 и т. Д. Например:

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;

Но я не совсем уверен, как поступить с AM и PM. Я не совсем уверен, что у меня синтаксис insert into table совершенно правильный. Любая помощь будет оценена.

1 Ответ

2 голосов
/ 27 мая 2019

Используйте 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 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;
...