环境:CentOS7
hive-1.1.0-cdh5.14.0
hadoop-2.6.0-cdh5.14.0
数字类型
TINYINT(1字节,有符号整数,从-128至127)
SMALLINT(2字节,有符号整数,从-32,768至32,767)
INT / INTEGER(4字节,有符号整数,从-2,147,483,648到2,147,483,647)
BIGINT(8字节,符号整数,从-9,223,372,036,854,775,808至9,223,372,036,854,775,807)
FLOAT (4字节,单精度浮点数)
DOUBLE (8字节,双精度浮点数)
DOUBLE PRECISION ( DOUBLE的别名,仅从 Hive 2.2.0开始提供)
DECIMAL(最大精度为38位,不指定小数位数的话,将会四舍五入到整数位,所以在定义的时候一定要定义精度,如(10,2))
NUMERIC(没有找到这个类型的相关说明)
数字类型支持各种算术运算符,UDF和UDAF,如:正负,加减乘除,平均值,求和,计数,取模,三角函数,乘方开方、对数
对小数还有以下三种取整运算符
ROUND(x) :四舍五入。
CEILING(x) :返回大于该数的最小整数
FLOOR(x) :返回小于该数的最大整数
TIMESTAMP(yyyy-MM-dd'T'HH:mm:ss.SSS,精确到纳秒)
DATE(YYYY-MM-DD,仅存储日期)
INTERVAL(存储时间间隔,具体用法查看官档,目前用的不多)
UNIX_TIMESTAMP():返回UNIX时间戳(又称POSIX时间)
CURRENT_TIMESTAMP():返回当前时间戳
TO_DATE(timestamp):返回时间戳的日期
YEAR(timestamp/date):返回时间戳或日期中的年
MONTH(timestamp/date):返回时间戳或日期中的月
DAY(timestamp/date):返回时间戳或日期中的日
HOUR(timestamp/date):返回时间戳中的时
MINUTE(timestamp):返回时间戳中的分
SECOND(timestamp):返回时间戳中的秒
WEEKOFYEAR(timestamp/date):返回时间戳或日期在当前的周数
DATEDIFF(start_date,end_dat):返回结束日期减去开始日期的天数
DATE_ADD(date,n):返回日期加上n天后的日期
DATE_SUB(date,n):返回日期减去n天后的日期
STRING(可以用单引号或双引号表示字符串)
VARCHAR(长度为1-65535,使用该类型时必须指定最大长度,超过指定长度会直接截断字符串)
CHAR(定长字符串类型,最大长度为255,如果字符串本身小于定义的长度,将会用空格填充)
elt,返回第n个字符串 ,如SELECT elt(2, 'New York', 'Beijing', 'Toronto') FROM employee LIMIT 1;
assert_true,如果条件为false时抛出异常,如SELECT assert_true(work_place IS NULL) FROM employee;
isnull,用于检验值是否为空,如SELECT work_place, isnull(work_place) is_null, isnotnull(work_place) is_not_null FROM employee;
initcap(string A):返回首字母大写的字符串
upper(string A) ucase(string A):upper小写转大写,ucase大写转小写
trim(string A) ltrim(string A) rtrim(string A):trim去掉字符串两端的空格,ltrim去字符串左边的,rtrim去字符串右边的
substr(string A,n,length):从位置n开始,从字符串A中截取长度为length的字符串,这里要注意的是,无论n是0还是1,指向的都是第一个字符
BOOLEAN(取值为true/false)
BINARY(二进制,只支持与String的转换,如1011)
Array:ARRAY
maps :MAP
STRUCT: STRUCT
union :UNIONTYPE
SIZE函数:SIZE(colname),用于计算MAP、ARRAY中的数据量,如果size未知则返回-1。
ARRAY_CONTAINS函数:ARRAY_CONTAINS(col,value),检验列中是否包含指定值,返回boolean值。
SORT_ARRAY函数:SORT_ARRAY(col),用于对数组进行升序排序。
可以使用CAST将一个数据类型转换为另一个数据类型,用法是cast(value as newtype),如果该值不能被转换,则cast会返回null,特别注意的是日期类型,只能在Date、String、Timestamp三种之间进行转换
数据类型转换 | 结果 |
---|---|
cast(date as date) | 不变 |
cast(timestamp as date) | 截断年月日 |
cast(string as date) | 如果字符串的格式是'YYYY-MM'DD',则返回日期,否则返回null |
cast(date as timestamp) | 基于本地时区,返回对应日期值的午夜时间(0点) |
cast(date as string) | 转换为格式是'YYYY-MM-DD'的字符串 |
参考:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-HiveDataTypes
https://www.cnblogs.com/MOBIN/p/5618747.html#6
https://blog.csdn.net/xiaoshunzi111/article/details/51911546