在 hive 中转换日期格式

Posted

技术标签:

【中文标题】在 hive 中转换日期格式【英文标题】:convert date format in hive 【发布时间】:2014-04-10 15:10:55 【问题描述】:

我如何转换这个日期:

Dec 30, 2013

hive 中的格式为“YYYY-MM-DD”:

2013-12-30

我可以进行分解和连接以匹配给定的格式,但是将 12 月转换为 12 是有问题的。

【问题讨论】:

【参考方案1】:

UDF 是在 hive 或 impala 中进入的方式,但是如果您在 HDFS 中加载数据之前定义了 ETL,建议让 ETL 进行日期转换。以 YYYY-MM-DD 格式存储日期很重要,以便在 hive 或 impala 中利用 TO_DATE()

【讨论】:

【参考方案2】:

如果您所有的日期都是这种格式,那么您可以编写一个 UDF,将该列读取为字符串, 然后将日期转换为给定的格式。像这样的:

public String convertDate(String dt2) throws ParseException
    SimpleDateFormat incommingDateFormat = new SimpleDateFormat("MMM dd, yyyy");
    SimpleDateFormat convertedDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date dt = incommingDateFormat.parse(dt2);
    return convertedDateFormat.format(dt);

希望这会有所帮助...!!!

【讨论】:

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

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

Hive日期格式转换用法

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

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

[转] String to Date conversion in hive - 在 Hive 中各种字符串转换成日期格式

java日期格式转换的问题