Hive 时间数据类型

Hive 时间数据类型

Hive 中,可以用String、Date和Timestamp表示日期时间,String 用 yyyy-MM-dd 的形式表示,Date 用 yyyy-MM-dd 的形式表示,Timestamp 用 yyyy-MM-dd hh:mm:ss 的形式表示。这三种数据类型在使用细节上,有一些需要注意的点:

在用命令行插入值的时候,需要进行类型转换,把String类型的字符串转化成相应的时间类型。转化的规则如下:

类型转化

结果(参照下图)

cast(string as date)

如果字符串的格式为'YYYY-MM-DD', 则对应的年月日返回。如果字符串不是该格式,则返回NULL。

cast(date as string)

日期被转换为'YYYY-MM-DD'格式的字符串。

cast(timestamp as date)

基于本地时区确定timestamp的年月日作为值返回。

cast(date as timestamp)

基于本地时区,返回日期对应午夜时间。

在做时间比较的时候(如join条件为不同时间类型的两个字段),不同类型的比较结果如下图所示。

Hive 时间数据类型

Hive 时间数据类型-带时分秒

Join比较

在两表Join时,会涉及到字段的比较,此时应注意:

如第一张图所示,如果时间信息中不包含时分秒,String 与 Date、Timestamp 表达的时间相同时是可以直接比较的,但是Date和Timestamp之间却不能直接比较的。

如果想比较这两种时间类型,需要用cast函数做转换,如:a_table join b_table on (a_table.timestamp_column = cast(b_table.date_column as timestamp));

如第二张图所示,如果时间信息中包含时分秒,此时String 与 Timestamp 表达的时间相同时是可以直接比较的,Date 不能表示带时分秒的信息。

Insert value

在insert value时,使用者一般用字符串的形式向Hive表中插入value,但是字符串的插入的结果与字段类型相关。如上图所示,图中绿线表示插入成功,红线表示插入失败得到了不想要的结果。

💫 相关推荐

lol新版乌鸦曝光 斯维因重做上线时间新皮肤效果炸裂
驾校的教练,一个月能挣多少钱
365限制投注额度怎么办

驾校的教练,一个月能挣多少钱

📅 06-27 👁️ 6289
成都川菜培训学校排名有哪些,正宗川菜厨师学校哪个好
全球最大体育平台365

成都川菜培训学校排名有哪些,正宗川菜厨师学校哪个好

📅 06-29 👁️ 851