我是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_time该join键将此表连接到另一个表.所需的日期格式为'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 函数不会帮助您解决问题。