首先要明确的是:hive中的函数包括内置函数和自定义函数;而内置函数又包括:简单函数(map阶段),聚合函数(reduce阶段),集合函数(map阶段),特殊函数。而自定义函数又包括:UDF(map阶段),UDAF(reduce阶段)。
内置函数:
不一一列举,查看语句如下:
show functions; -- 查看内置函数 desc function abs; -- 显示函数的详细信息 desc function entended concat -- 显示函数的扩展信息
常用内置函数:
-- 数学函数 round(double d, int n): 返回保留n位小数的近似d值 floor(double d): 返回小于d的最大整值 ceil(double d): 返回大于d的最小整值 rand(int seed): 返回随机数,seed是随机因子 bin(int d): 计算二进制值d的string值 -- 日期函数 to_date(string timestamp):返回时间字符串中的日期部分,如to_date('1970-01-01 00:00:00')='1970-01-01' current_date:返回当前日期 year(date):返回日期date的年,类型为int如year('2019-01-01')=2019 month(date):返回日期date的月,类型为int,如month('2019-01-01')=1 day(date): 返回日期date的天,类型为int,如day('2019-01-01')=1 weekofyear(date1):返回日期date1位于该年第几周。如weekofyear('2019-03-06')=10 datediff(date1,date2):返回日期date1与date2相差的天数,如datediff('2019-03-06','2019-03-05')=1 date_add(date1,int1):返回日期date1加上int1的日期,如date_add('2019-03-06',1)='2019-03-07' date_sub(date1,int1):返回日期date1减去int1的日期,如date_sub('2019-03-06',1)='2019-03-05' months_between(date1,date2):返回date1与date2相差月份,如months_between('2019-03-06','2019-01-01')=2 add_months(date1,int1):返回date1加上int1个月的日期,int1可为负数。如add_months('2019-02-11',-1)='2019-01-11' last_day(date1):返回date1所在月份最后一天。如last_day('2019-02-01')='2019-02-28' next_day(date1,day1):返回日期date1的下个星期day1的日期。day1为星期X的英文前两字母如next_day('2019-03-06','MO') 返回'2019-03-11' trunc(date1,string1):返回日期最开始年份或月份。string1可为年(YYYY/YY/YEAR)或月(MONTH/MON/MM)。如trunc('2019-03-06','MM')='2019-03-01',trunc('2019-03-06','YYYY')='2019-01-01' unix_timestamp():返回当前时间的unix时间戳,可指定日期格式。如unix_timestamp('2019-03-06','yyyy-mm-dd')=1546704180 from_unixtime():返回unix时间戳的日期,可指定格式。如select from_unixtime(unix_timestamp('2019-03-06','yyyy-mm-dd'),'yyyymmdd')='20190306'