hive类型转换_sqlserver数据类型转换

hive类型转换_sqlserver数据类型转换hive数据类型转换规则及转换原则,日期类型转换

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Hive系列文章

Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器)

Hive系列 (一):Hive搭建

Hive系列 (二):Hive基础知识

Hive系列 (三):Hive开窗函数详解

Hive系列 (四):自定义函数UDF UDTF UDAF

Hive系列 (五):Hive数据类型

Hive系列 (六):Hive数据类型转换

Hive系列 (七):Hive常用函数

Hive系列 (八):Hive中的explode 与 lateral view

Hive系列 (九):Hive数据存储

Hive系列 (十):Hive调优

数据类型转换

同其他语言一样,Hive也包含隐式转换显式转化

  1. Hive会对numeric类型的数据进行隐式转换。
  2. 任何整数类型都可以隐式地转换成一个范围更大的类型。
  3. TINYINT,SMALLINT,INT,BIGINT,FLOAT和STRING都可以隐式 地转换成DOUBLE;BOOLEAN类型不能转换为其他任何数据类型。
  4. 可以使用CAST操作显示进行数据类型转换,例如CAST(‘1’ AS INT)将把字符串’1’ 转换成整数1;如果强制类型转换失败,如执行CAST(‘X’ AS INT),表达式返回空值 NULL

Cast显示转换

可以用CAST来显式的将一个类型的数据转换成另一个数据类型,其语法为cast(value AS TYPE)

0: jdbc:hive2://master:10000> select stu_id,chinese from myhive.stu_scores where stu_id = 10001;
OK
+---------+----------+
| stu_id  | math     |
+---------+----------+
| 10001   | 70.0     |
+---------+----------+
1 row selected (4.558 seconds)
0: jdbc:hive2://master:10000> select stu_id,cast(math as float) as math from myhive.stu_scores where stu_id = 10001;
OK
+---------+-------+
| stu_id  | math  |
+---------+-------+
| 10001   | 70.0  |
+---------+-------+
1 row selected (4.105 seconds)
0: jdbc:hive2://master:10000> 

# 这样math将会显示的转换成float。如果math是不能转换成float,这时候cast将会返回NULL

注意事项:

  1. 如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现。

  2. 对于binary类型的数据,只能将binary类型的数据转换成string类型。

  3. 只有binary类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作

    select(cast(cast(a as string) as double)) from tb1
    

数据类型转换表

boolean tinyint smallint int bigint float double decimal string varchar timestamp date binary
boolean true false false false false false false false false false false false false
tinyint false true true true true true true true true true false false false
smallint false false true true true true true true true true false false false
int false false false true true true true true true true false false false
bigint false false false false true true true true true true false false false
float false false false false false true true true true true false false false
double false false false false false false true true true true false false false
decimal false false false false false false false true true true false false false
string false false false false false false true true true true false false false
varchar false false false false false false true true true true false false false
timestamp false false false false false false false false true true true false false
date false false false false false false false false true true false true false
binary false false false false false false false false false false false false true

日期类型转换说明

有效的转换 结果
cast(date as date) 返回date类型
cast(timestamp as date) timestamp中的年/月/日的值是依赖与当地的时区,结果返回date类型
cast(string as date) 如果string是YYYY-MM-DD格式的,则相应的年/月/日的date类型的数据将会返回;但如果string不是YYYY-MM-DD格式的,结果则会返回NULL。
cast(date as timestamp) 基于当地的时区,生成一个对应date的年/月/日的时间戳值
cast(date as string) date所代表的年/月/日时间将会转换成YYYY-MM-DD的字符串

转换示例

日期与字符串转换

# cast(string as date)
# 不是YYYY-MM-DD格式返回null
0: jdbc:hive2://master:10000> select cast('20210825' as date);
OK
+-------+
|  _c0  |
+-------+
| NULL  |
+-------+
1 row selected (2.135 seconds)
0: jdbc:hive2://master:10000> select cast('2021-08-25' as date);
OK
+-------------+
|     _c0     |
+-------------+
| 2021-08-25  |
+-------------+
1 row selected (2.167 seconds)

# 日期转字符串
0: jdbc:hive2://master:10000> select cast(current_date() as string);
OK
+-------------+
|     _c0     |
+-------------+
| 2021-08-25  |
+-------------+
1 row selected (2.291 seconds)
0: jdbc:hive2://master:10000> 

时间戳与日期转换

# cast(timestamp as date)
# 显示当前时间戳current_timestamp()
0: jdbc:hive2://master:10000> select current_timestamp();
OK
+--------------------------+
|           _c0            |
+--------------------------+
| 2021-08-25 16:35:27.249  |
+--------------------------+
1 row selected (2.287 seconds)

# 时间戳转日期
0: jdbc:hive2://master:10000> select cast(current_timestamp() as date);
OK
+-------------+
|     _c0     |
+-------------+
| 2021-08-25  |
+-------------+
1 row selected (2.399 seconds)

# 日期转时间戳
0: jdbc:hive2://master:10000> select cast(current_date() as timestamp);
OK
+------------------------+
|          _c0           |
+------------------------+
| 2021-08-25 00:00:00.0  |
+------------------------+
1 row selected (2.325 seconds)
0: jdbc:hive2://master:10000>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191031.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • python 判断文件是否存在,删除文件

    python 判断文件是否存在,删除文件#判断文件是否存在,path为文件路径importosos.path.exists(path)#删除文件,path为文件路径importosos.remove(path)

  • python3.8安装matplotlib_matplotlib画图

    python3.8安装matplotlib_matplotlib画图1.直接打开命令提示符(快捷键window+r)2.若提示安装失败(Python——Youareusingpipversion9.0.1,howeverversion10.0.1isavailable.),输入python-mpipinstall-Upipsetuptools进行升级。安装成功,则下图所示:3.安装成功后,输入pytho…

  • java前端好学还是后端好学,一篇文章帮你解答

    java前端好学还是后端好学,一篇文章帮你解答蚂蚁金服一面:下午杭州的电话,问有没有空,果断有空,虽然感觉略显紧张,有点懵逼。面试的题目:HashMap和Hashtable的区别实现一个保证迭代顺序的HashMap说一说排序算法,稳定性,复杂度说一说GC可以保证的实习时长职业规划整体来说,一面的基础性问题比较多,所以博主基本都答出来了,准备过还是有些用处的。所以一面完了感觉还不错,接着第二天下午就二面了。蚂蚁金服二面二面是我最慌的面试,因为二面是最关键的,是最大的主管面试,所以非常关键,整体来说,二面的节奏非常快,和一面完全

  • 【转载】秒杀系统架构优化思路

    【转载】秒杀系统架构优化思路

    2021年11月18日
  • Layui二级菜单优化

    Layui二级菜单优化刚开始学习layui框架,碰到一个缺陷是二级菜单每次点击都会收缩到原始状态。用 Request.Url.ToString();获取URL判断点击页面前哪些节点是展开的,添加class=\"layui-nav-itemlayui-nav-itemed\">(展开子节点)解决了。代码如下:for(vari=0;i<data.length;i++){…

  • MySQL-索引;视图「建议收藏」

    MySQL-索引;视图「建议收藏」一、索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。如:我们通过汉字字典查找汉字有两种方式(1)一页一页挨着找,直到找到为止,这种查找方式属于全字典扫描(2)通过汉语字典的目录页(索引),按拼音、笔画、偏旁部首等排序的目录(索引)缩小查找范围快速查找到需要的字select*fromt_userwherename=’zhangsan’;如果name字段上没有添加索引(目录),或者说没有给name字段创建索引,MySQL会

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号