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,总的思路就是去除或添加相关连接符,然后输出拼装后的结果。