Hive中的日期格式转换

Yun*_*ang 13 format hive date

我是sql/hive的新手.首先,我使用以下命令将txt文件加载到配置单元中:

drop table if exists Tran_data;
create table Tran_data(tran_time string, 
resort string, settled double)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
Load data local inpath 'C:\Users\me\Documents\transaction_data.txt' into table Tran_Data;
Run Code Online (Sandbox Code Playgroud)

tran_timetxt文件中的变量如下所示:10-APR-2014 15:01.加载此Tran_data表后,我尝试转换tran_time为"标准"格式,以便我可以使用tran_timejoin键将此表连接到另一个表.所需的日期格式为'yyyymmdd'.我搜索了在线资源,发现了这个:unix_timestamp(substr(tran_time,1,11),'dd-MMM-yyyy')

基本上,我这样做:unix_timestamp('10-APR-2014','dd-MMM-yyyy').但是,输出为"NULL".

所以我的问题是:如何将日期格式转换为"标准"格式,然后进一步将其转换为'yyyymmdd'格式?

小智 20

from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd'), 'yyyy-MM-dd') 
Run Code Online (Sandbox Code Playgroud)


小智 1

unix_timestamp 函数会将给定的字符串日期格式转换为以秒为单位的unix时间戳,但不像这种格式dd-mm-yyyy。

您需要编写自己的自定义 udf 将给定的字符串日期转换为您需要的格式,因为目前 Hive 没有任何预定义函数。我们有 to_date 函数将时间戳转换为 date ,剩余的所有 unix_timestamp 函数不会帮助您解决问题。