UDF 在 Hive 中转换日期格式

Posted

技术标签:

【中文标题】UDF 在 Hive 中转换日期格式【英文标题】:UDF to Coverting Date Format in Hive 【发布时间】:2017-03-20 13:08:40 【问题描述】:

大家好,我是 hadoop 新手,我需要创建 hive UDF 以将字符串数据类型日期转换为日期数据类型我有一个日期数据类型为字符串的表

abc 2/9/2017
xyz 2/8/2017
city 2/7/2017
state 2/1/2017

UDF 会将日期转换为 yyy-mm-dd 并插入到另一个日期列数据类型为 Date 的表中

output like

abc 2017/2/9
xyz 2017/2/8
city 2017/2/7
state 2017/2/1

我试过了

TO_DATE(from_unixtime(UNIX_TIMESTAMP(date,'yyyy-mm-dd')))

但是得到了NULL值

【问题讨论】:

【参考方案1】:

dd/MM/yyyy

hive> select TO_DATE(from_unixtime(UNIX_TIMESTAMP('12/9/2017','dd/MM/yyyy')));
OK
_c0
2017-09-12

【讨论】:

嗨 Dudu 感谢您的帮助,但这不起作用。当我将该日期插入另一个表时,它具有 NULL 值我的查询:插入覆盖表 table select Cust_name,TO_DATE(from_unixtime(UNIX_TIMESTAMP(purchase_date ,'dd-MM-yyyy'))) 来自 old_table; 看看我的回答——我使用的是不同的格式

以上是关于UDF 在 Hive 中转换日期格式的主要内容,如果未能解决你的问题,请参考以下文章

hive将时间转换成星期几

Hive:python UDF 在关闭操作符时给出“Hive 运行时错误”

Hive 中如何实现日期格式判断

Hive日期格式转换用法

如何在 Presto/Hive 中将日期格式 YYYY-MM-DD 转换为整数 YYYYMMDD?

Hive日期格式转换详解(包含13位时间戳转毫秒时间)