Hive日期、时间转换:YYYY-MM-DD与YYYYMMDD;hh.mm.ss与hhmmss的相互转换

思路

YYYY-MM-DD与YYYYMMDD;hh-mm-ss与hhmmss的相互转换有两种办法,第一种是利用UNIX时间戳函数,第二种是利用字符串拼接函数。

YYYY-MM-DD与YYYYMMDD相互转换例子

以2020-08-23和20200823相互转换为例

--方法1: from_unixtime + unix_timestamp
--2020082转成2020-08-23 
select from_unixtime(unix_timestamp('20200823','yyyymmdd'),'yyyy-mm-dd') from db.table_name;

--2020-08-23转成20200823
select from_unixtime(unix_timestamp('2020-08-23','yyyy-mm-dd'),'yyyymmdd') from db.table_name;
--方法2: substr + concat
--2020082转成2020-08-23
select concat(substr('20200823',1,4),'-',substr('20200823',5,2),'-',substr('20200823',7,2)) from db.table_name;

--2020-08-23转成20200823
select concat(substr('2020-08-23',1,4),substr('2020-08-23',6,2),substr('2020-08-23',9,2)) from db.table_name;

hh.mm.ss与hhmmss相互转换例子

以09.41.30和094130相互转换为例

--方法1: from_unixtime + unix_timestamp
--094130转成09.41.30
select from_unixtime(unix_timestamp('094130','hhmmss'),'hh.mm.ss') from db.table_name;

--09.41.30转成094130
select from_unixtime(unix_timestamp('09.41.30','hh.mm.ss'),'hhmmss') from db.table_name;
--方法2: substr + concat
--094130转成09.41.30
select concat(substr('094130',1,2),'.',substr('094130',3,2),'.',substr('094130',5,2)) from db.table_name;

--09.41.30转成094130
select concat(substr('09.41.30',1,2),substr('09.41.30',4,2),substr('09.41.30',7,2)) from db.table_name;

使用方法1: from_unixtime + unix_timestamp,总的思路就是先将日期或时间用unix_timestamp转换为时间戳,然后再用from_unixtime以指定格式输出结果。

使用方法2: substr + concat,总的思路就是去除或添加相关连接符,然后输出拼装后的结果。

posted @ 2020-08-23 09:50  JasonCeng  阅读(10470)  评论(0编辑  收藏  举报