Создать новый формат даты - PullRequest
0 голосов
/ 11 июня 2018

У меня есть набор данных, содержащий поле даты в формате MM / dd / yyyy, моя цель - создать таблицу с тем же форматом даты, но с форматом отметки времени (в конце должна быть опция для выполнения датыфункции на это, если это int или строковая дата, функция не будет работать.)

То, что я пробовал: имя моего столбца: as_of_date

1) cast (unix_timestamp (as_of_date, "MM)/ dd / yyyy ") как метка времени) i / p -> 01/03/2006, o / p -> 2006-01-03 00:00:00 проблема - я не хочу лишних нулей в выводе.substr не работает с функцией даты

2) Если я сохраню значение как строку, функции даты не будут работать.день ('01 / 03/2006 ') ввод: '01 / 03/2006', вывод: null (но ожидается 3)

Можете ли вы помочь мне в формате даты, который уже существует, или помочь мне создатьновый формат даты для моей логики.

1 Ответ

0 голосов
/ 12 июня 2018

Попробуйте с этим один раз

используйте unix_timestamp , чтобы соответствовать формату ввода даты , затем используйте from_unixtime , чтобы изменить выходной формат , затем приведение к типу date .

hive> select date(from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd"));
+-------------+--+
|     _c0     |
+-------------+--+
| 2018-03-06  |
+-------------+--+

In Impala:

hive> select from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd");
+-------------+--+
|     _c0     |
+-------------+--+
| 2018-03-06  |
+-------------+--+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...