1. 不同数据类型比较
先来看一段SQL。表dean_test
中字段a
的类型是整型INT,字段b
的类型是字符串/字符型STRING/VARCHAR。
select * from dean_test where a = b
这就是不同数据类型比较。
现实中发现不少数据类型不匹配的比较能兼容地进行隐性类型转换。但是,隐性类型转换的一个大前提应该是不能丢失精度!换句话说,显性转换和隐性转换的结果必须是一致的!
2. hive的坑
date和string
hive早期的版本是没有date类型的,所以date都是用string来表示。因此早期的date_add返回的数据类型是string。
我们举个例子:下面这个条件在以前以字符串进行比较的时候是不会有问题的。结果应该是true
。
'2019-07-11 08:00:00' > date_add('2019