Конвертировать 201811 в дату в формате ггггммдд 20181101 - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть числовое поле в формате год-месяц:

201801
201802
201803
etc

Я хотел бы преобразовать их в дату, просто используя первое число месяца:

20180101
20180201
20180301
etc

Свернул кроличью нору с переполнением стека и перепробовал несколько вещей, в конечном итоге добравшись до ошибки:

select to_date(concat(cast(cast(201809 as BIGINT) as STRING), "01")) # returns null

Как я могу конвертировать, например, 201801 до даты, являющейся первым января 2018 года в формате ггггммдд, это 20180101?

1 Ответ

0 голосов
/ 07 ноября 2018

Hive ожидает Дата в формате yyyy-MM-dd, но в вашем случае вы конвертируете yyyyMMdd в тип данных date, поэтому вы получаете нулевое значение после to_date

hive> select concat(cast(cast(201809 as BIGINT) as STRING), "01");
+-----------+--+
|    _c0    |
+-----------+--+
| 20180901  |
+-----------+--+

Преобразование в дату:

hive> select to_date(from_unixtime(unix_timestamp(concat(bigint('201908'),'01'),
'yyyyMMdd'),'yyyy-MM-dd'));
+-------------+--+
|     _c0     |
+-------------+--+
| 2019-08-01  |
+-------------+--+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...