为什么下面的两个配置单元sql有不同的结果?

n6lpvg4x  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(370)

配置单元版本为2.1.0
第1季度:

hive> select day, datediff(day, '2017-01-01') from mall_stat_daily where day='2017-11-13';

result:
2017-11-13      315

昆士兰州2:

hive> select day, datediff('2017-11-13', '2017-01-01') from mall_stat_daily where day='2017-11-13';

result:
2017-11-13      316

为什么这些有不同的结果?我还在mysql中测试了这些sql,得到了相同的结果“316”。

dxxyhpgq

dxxyhpgq1#

这是2.0.0中的一个bug,因为日期格式化程序在解析字符串中的日期时使用utc时区。当两个参数都是字符串类型时,这将正常工作,但当其中一个参数是字符串类型,而另一个是日期/时间戳类型时,它会给出不正确的结果,因为日期/时间戳值将具有基于本地时区日期的毫秒结果。这在2.3版本中已修复。https://issues.apache.org/jira/browse/hive-15338
希望这有帮助。

相关问题