spark sql-将日期从MMM dd,yyyy转换为yy-MMM-dd

时间:2019-07-19 18:43:06

标签: sql apache-spark hive apache-spark-sql

我的日期为string,格式为MMM dd, yyyy,我想将其转换为yy-MMM-dd格式

Jan 14, 2018应转换为18-JAN-14

以下代码将其转换为yyyy-mm-dd格式

select to_date(FROM_UNIXTIME(unix_timestamp("Jan 14, 2018","MMM dd, yyyy"))) as date 

但是,以下代码返回null

select to_date(FROM_UNIXTIME(unix_timestamp("Jan 14, 2018","MMM dd, yyyy")), "yy-MMM-dd") as date 

2 个答案:

答案 0 :(得分:0)

使用date_format从日期转换为字符串:

> spark.sql("""select date_format(FROM_UNIXTIME(unix_timestamp("Jan 14, 2018","MMM dd, yyyy")), "yy-MMM-dd") as date""").show
+---------+
|     date|
+---------+
|18-Jan-14|
+---------+

答案 1 :(得分:0)

在Hive中,to_date不接受格式参数。所需格式应为from_unixtime的参数。

to_date(FROM_UNIXTIME(unix_timestamp("Jan 14, 2018","MMM dd, yyyy"), "yy-MMM-dd"))

请注意,仅需在Hive 2.1.0之前进行to_date转换才能转换string的返回类型,因为更高的版本将返回date的类型。