栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Hive 中的不规则日期格式大小比较出错

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hive 中的不规则日期格式大小比较出错

记录一个 Hive 查询中,关于 不规则时间/日期格式比较 的问题。

在数仓实施时,数据源中关于 时间/日期类型 的字段格式有很多,例如 2022-05-10、2022-05-10 15:30:15、2022/05/10、2022/05/10 15:30:15,还有很多不规范的数据,例如 2022-5-10、2022-5-8 15:30:15等等 。
我们在进行日期大小比较时,如果直接使用这些原始数据,就很容易出现问题。
看下面的例子:

# 直接用 时间字符串 比对查询,返回结果为 false
select '2022-5-10 15:30:15' > '2022-5-9 15:30:15';
# 直接用 时间字符串 比对查询,返回结果为 true
select '2022-5-10 15:30:15' > '2022-5-09 15:30:15';



# 假如一张表 test_04 ,有两个字段 date_1 、 date_2,都存储着时间类型数据。
 	test_04.date_1	test_04.date_2
1	2022-05-10	2022-05-09
2	2022-05-10 15:30:15	2022-05-09 15:30:15
3	2022-5-10	2022-5-9
4	2022-5-10 15:30:15	2022-5-9 15:30:15

# 情况一:这里时间比对时,当时间不规范比对结果有问题
SELECT * from test.test_04 where date_1 > date_2 limit 10;
1	2022-05-10	2022-05-09
2	2022-05-10 15:30:15	2022-05-09 15:30:15

# 情况二:如果转换为标准时间格式,比对结果没有问题
SELECt * from test.test_04 where date_format(date_1,'yyyy-mm-dd hh:MM:ss') > date_format(date_2,'yyyy-mm-dd hh:MM:ss') limit 10 ;
1	2022-05-10	2022-05-09
2	2022-05-10 15:30:15	2022-05-09 15:30:15
3	2022-5-10	2022-5-9
4	2022-5-10 15:30:15	2022-5-9 15:30:15

后面,我们在进行时间/日期大小比较时,使用date_format函数转换为标准格式后,再进行比较,避免出现类似上述的问题。
这个问题会比较隐蔽,不注意就出现问题了,还是养成 时间比较就先转换为标准格式的习惯吧。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/897166.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号