獲取當前時間戳
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 取...