首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将201811转换为yyyymmdd 20181101格式的日期

将201811转换为yyyymmdd 20181101格式的日期
EN

Stack Overflow用户
提问于 2018-11-07 17:50:34
回答 1查看 641关注 0票数 1

我有一个年份月份格式的数字字段:

代码语言:javascript
复制
201801
201802
201803
etc

我想把这些转换成一个日期,只使用这个月的第一天:

代码语言:javascript
复制
20180101
20180201
20180301
etc

下了一个堆叠溢出的兔子洞,尝试了几件事,最后在失败之前走了这么远:

代码语言:javascript
复制
select to_date(concat(cast(cast(201809 as BIGINT) as STRING), "01")) # returns null

我如何以yyyymmdd格式将201801转换为2018年的第一个日期,即20180101?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-07 18:42:54

Hive期望 date 格式为yyyy-MM-dd,但在您的示例中,您正在将yyyyMMdd转换为日期数据类型,这就是在to_date之后获得空值的原因。

代码语言:javascript
复制
hive> select concat(cast(cast(201809 as BIGINT) as STRING), "01");
+-----------+--+
|    _c0    |
+-----------+--+
| 20180901  |
+-----------+--+

转换日期:

代码语言:javascript
复制
hive> select to_date(from_unixtime(unix_timestamp(concat(bigint('201908'),'01'),
'yyyyMMdd'),'yyyy-MM-dd'));
+-------------+--+
|     _c0     |
+-------------+--+
| 2019-08-01  |
+-------------+--+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53195013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档