🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 内置函数 内容较多,见《Hive官方文档》 `https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF` 测试各种内置函数的快捷方法: 1. 创建一个dual表 ~~~ create table dual(id string); ~~~ load一个文件(一行,一个空格)到dual表 ~~~ select substr('angelababy',2,3) from dual; ~~~ # 日期函数 UNIX时间戳转日期函数: from_unixtime 获取当前UNIX时间戳函数: unix_timestamp 日期转UNIX时间戳函数: unix_timestamp 指定格式日期转UNIX时间戳函数: unix_timestamp 日期时间转日期函数: to_date 日期转年函数: year 日期转月函数: month 日期转天函数: day 日期转小时函数: hour 日期转分钟函数: minute 日期转秒函数: second 日期转周函数: weekofyear 日期比较函数: datediff 日期增加函数: date_add 日期减少函数: date_sub **UNIX 时间戳转日期函数 : from_unixtime** 语法:` from_unixtime(bigint unixtime[, string format])` 返回值: string 说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式 举例: ~~~ hive> select from_unixtime(1323308943,'yyyyMMdd') from dual; 20111208 ~~~ **获取当前 UNIX 时间戳函数 : unix_timestamp** 语法: unix_timestamp() 返回值: bigint 说明: 获得当前时区的UNIX时间戳 举例: ~~~ hive> select unix_timestamp() from dual; 1323309615 ~~~ **日期转 UNIX 时间戳函数 : unix_timestamp** 语法: unix_timestamp(string date) 返回值: bigint 说明: 转换格式为`"yyyy-MM-dd HH:mm:ss"`的日期到UNIX时间戳。如果转化失败,则返回0。 举例: ~~~ hive> select unix_timestamp('2011-12-07 13:01:03') from dual; 1323234063 ~~~ **指定格式日期转 UNIX 时间戳函数 : unix_timestamp** 语法: unix_timestamp(string date, string pattern) 返回值: bigint 说明: 转换pattern格式的日期到UNIX时间戳。如果转化失败,则返回0。 举例: ~~~ hive> select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss') from dual; 1323234063 ~~~ **日期时间转日期函数 : to_date** 语法: to_date(string timestamp) 返回值: string 说明: 返回日期时间字段中的日期部分。 举例: ~~~ hive> select to_date('2011-12-08 10:03:01') from dual; 2011-12-08 ~~~ **日期转年函数 : year** 语法: year(string date) 返回值: int 说明: 返回日期中的年。 举例: ~~~ hive> select year('2011-12-08 10:03:01') from dual; 2011 hive> select year('2012-12-08') from dual; 2012 ~~~ **日期转月函数 : month** 语法: month (string date) 返回值: int 说明: 返回日期中的月份。 举例: ~~~ hive> select month('2011-12-08 10:03:01') from dual; 12 hive> select month('2011-08-08') from dual; 8 ~~~ **日期转天函数 : day** 语法: day (string date) 返回值: int 说明: 返回日期中的天。 举例: ~~~ hive> select day('2011-12-08 10:03:01') from dual; 8 hive> select day('2011-12-24') from dual; 24 ~~~ **日期转小时函数 : hour** 语法: hour (string date) 返回值: int 说明: 返回日期中的小时。 举例: ~~~ hive> select hour('2011-12-08 10:03:01') from dual; 10 ~~~ **日期转分钟函数 : minute** 语法: minute (string date) 返回值: int 说明: 返回日期中的分钟。 举例: ~~~ hive> select minute('2011-12-08 10:03:01') from dual; 3 ~~~ **日期转秒函数 : second** 语法: second (string date) 返回值: int 说明: 返回日期中的秒。 举例: ~~~ hive> select second('2011-12-08 10:03:01') from dual; 1 ~~~ **日期转周函数 : weekofyear** 语法: weekofyear (string date) 返回值: int 说明: 返回日期在当前的周数。 举例: ~~~ hive> select weekofyear('2011-12-08 10:03:01') from dual; 49 ~~~ **日期比较函数 : datediff** 语法: datediff(string enddate, string startdate) 返回值: int 说明: 返回结束日期减去开始日期的天数。 举例: ~~~ hive> select datediff('2012-12-08','2012-05-09') from dual; 213 ~~~ **日期增加函数 : date_add** 语法: date_add(string startdate, int days) 返回值: string 说明: 返回开始日期startdate增加days天后的日期。 举例: ~~~ hive> select date_add('2012-12-08',10) from dual; 2012-12-18 ~~~ **日期减少函数 : date_sub** 语法: date_sub (string startdate, int days) 返回值: string 说明: 返回开始日期startdate减少days天后的日期。 举例: ~~~ hive> select date_sub('2012-12-08',10) from dual; 2012-11-28 ~~~ # 条件函数 If函数: if 非空查找函数: COALESCE 条件判断函数:CASE **If 函数 : if** 语法: `if(boolean testCondition, T valueTrue, T valueFalseOrNull)` 返回值: T 说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull 举例: ~~~ hive> select if(1=2,100,200) from dual; 200 hive> select if(1=1,100,200) from dual; 100 ~~~ **非空查找函数 : COALESCE** 语法: `COALESCE(T v1, T v2, …)` 返回值: T 说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL 举例: ~~~ hive> select COALESCE(null,'100','50′) from dual; 100 ~~~ **条件判断函数: CASE** 语法 : `CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END` 返回值 : T 说明:如果 a 等于 b ,那么返回 c ;如果 a 等于 d ,那么返回 e ;否则返回 f 举例: ~~~ hive> Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from dual; mary ~~~ # 字符串函数 字符串长度函数:length 字符串反转函数:reverse 字符串连接函数:concat 带分隔符字符串连接函数:concat_ws 字符串截取函数:substr,substring 字符串截取函数:substr,substring 字符串转大写函数:upper,ucase 字符串转小写函数:lower,lcase 去空格函数:trim 左边去空格函数:ltrim 右边去空格函数:rtrim 正则表达式替换函数:regexp_replace 正则表达式解析函数:regexp_extract URL解析函数:parse_url json解析函数:get_json_object 空格字符串函数:space 重复字符串函数:repeat 首字符ascii函数:ascii 左补足函数:lpad 右补足函数:rpad 分割字符串函数: split 集合查找函数: find_in_set **字符串长度函数: length** 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: ~~~ hive> select length('abcedfg') from dual; 7 ~~~ **字符串反转函数: reverse** 语法: reverse(string A) 返回值: string 说明:返回字符串A的反转结果999999举例: ~~~ hive> select reverse(abcedfg’) from dual; gfdecba ~~~