Hive日期、時間轉換:YYYY-MM-DD與YYYYMMDD;hh.mm.ss與hhmmss的相互轉換

JasonCeng發表於2020-08-23

思路

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,總的思路就是去除或新增相關連線符,然後輸出拼裝後的結果。

相關文章