我有一个年份月份格式的数字字段:
201801
201802
201803
etc我想把这些转换成一个日期,只使用这个月的第一天:
20180101
20180201
20180301
etc下了一个堆叠溢出的兔子洞,尝试了几件事,最后在失败之前走了这么远:
select to_date(concat(cast(cast(201809 as BIGINT) as STRING), "01")) # returns null我如何以yyyymmdd格式将201801转换为2018年的第一个日期,即20180101?
发布于 2018-11-07 18:42:54
Hive期望 date 格式为yyyy-MM-dd,但在您的示例中,您正在将yyyyMMdd转换为日期数据类型,这就是在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 |
+-------------+--+https://stackoverflow.com/questions/53195013
复制相似问题