Hive的类型层次中,可以根据需要进行隐式的类型转换,例如TINYINT与INT相加,则会将TINYINT转化成INT然后INT做加法。隐式转换的规则大致可以归纳如下:
任意数值类型都可以转换成更宽的数据类型(不会导致精度丢失)或者文本类型。
所有的文本类型都可以隐式地转换成另一种文本类型。也可以被转换成DOUBLE或者DECIMAL,转换失败时抛出异常。
BOOLEAN不能做任何的类型转换。
时间戳和日期可以隐式地转换成文本类型。
也可以使用CAST进行显式的类型转换,例如CAST('1' as INT)
,如果转换失败,CAST返回NULL。
时间类型
TIMESTAMP则存储纳秒级别的时间戳,同时Hive提供了一些内置函数用于在TIMESTAMP与Unix时间戳(秒)和字符串之间做转换。例如:
cast(date as date)
cast(timestamp as date)
cast(string as date)
cast(date as string)
- 1
- 2
- 3
- 4
时间戳类型的数据不包含任务的时区信息,但是to_utc_timestamp
和from_utc_timestamp
函数可以用于时区转换。DATE类型则表示日期,对应年月日三个部分。