hive中常用的函式

2021-10-10 15:10:24 字數 3124 閱讀 8195

獲取當前時間戳

hive> select unix_timestamp();

ok1605712071

獲取指定日期時間戳

hive> select unix_timestamp('2020-01-01 00:00:00');

ok1577836800

獲取指定格式的時間戳

hive> select unix_timestamp('20200101 00:00:00','yyyymmdd hh:mm:ss');

ok1577836800

格式:from_unixtime(bigint unixtime[, string format])

hive> select from_unixtime(1577836800,'yyyy-mm-dd hh:mm:ss');

ok2020-01-01 00:00:00

hive> select current_date();

ok2020-11-18

hive> select current_timestamp();

ok2020-11-18 23:21:15.19

hive> select to_date('2020-01-01 12:12:12');

ok2020-01-01

hive> select year('2020-01-01 12:12:12');

ok2020

hive> select month('2020-01-01 12:12:12');ok1

hive> select day('2020-01-01 12:12:12');ok1

hive> select hour('2020-01-01 12:13:14');

ok12

hive> select minute('2020-01-01 12:13:14');

ok13

hive> select second('2020-01-01 12:13:14');

ok14

當前周

hive> select weekofyear(current_date());

ok47

傳入日期

hive> select weekofyear('2020-01-01');

ok1

hive> select dayofmonth('2020-02-02');

ok2

用於計算date1和date2之間有幾個月。    如果date1在日曆中比date2晚,那麼months_between()就返回乙個正數。

如果date1在日曆中比date2早,那麼months_between()就返回乙個負數。

如果date1和date2日期一樣,那麼months_between()就返回乙個0。

hive> select months_between('2021-01-01','2020-01-01');

ok12.0

hive> select months_between('2020-01-01','2020-11-11');

ok-10.32258065

hive> select months_between('2021-11-01','2020-11-11');

ok11.67741935

hive> select add_months('2020-01-01',12);

ok2021-01-01

hive> select add_months('2020-01-01',-12);

ok2019-01-01

hive> select datediff('2020-01-01','2020-02-01');

ok-31

hive> select datediff('2020-03-01','2020-02-01');

ok29

hive> select date_add('2020-01-02',4);

ok2020-01-06

hive> select date_sub('2020-01-02',4);

ok2019-12-29

hive> select last_day('2020-06-01 12:12:12');

ok2020-06-30

hive> select date_format('2020-01-01','yyyy/mm/dd hh:mm:ss');

ok2020/01/01 00:00:00

hive> select round(12.123,2);

ok12.12

hive> select round(12.126,2);

ok12.13

hive> select ceil(12.36);

ok13

hive> select ceil(12.56);

ok13

hive> select floor(12.12);

ok12

hive> select floor(12.62);

ok12

str_to_map(varchar text, varchar listdelimiter, varchar keyvaluedelimiter)

使用listdelimiter將text分隔成k-v對,然後使用keyvaluedelimiter分隔每個k-v對,組裝成map返回。預設listdelimiter為( ,),keyvaluedelimiter為(:

str_to_map('1001=2020-06-14,1002=2020-06-14',  ','  ,  '=')

輸出

整理hive中常用函式

1.unix timestamp 返回當前或指定時間的時間戳 select unix timestamp select unix timestamp 2008 08 08 08 08 08 2.from unixtime 將時間戳轉為日期格式 select from unixtime 1218182...

Hive中常用SQL梳理

注意 hive子查詢需要起別名!先groupby後取第一條 方法1 遇到這麼乙個需求,輸入資料為乙個id對應多個name,要求輸出資料為id是唯一的,name隨便取乙個就可以。select a.from select row number over partition by id order by ...

hive中常用的時間格式轉化

select from unixtime unix timestamp 20180905 yyyymmdd yyyy mm dd select next day current date mo 取當前周的下周一 select date add next day current date mo 7 取...