为什么以下两个hive sql有不同的结果?

时间:2017-11-24 08:05:13

标签: hive hiveql

hive版本是2.1.0

hql 1:

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

result:
2017-11-13      315

hql2:

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中测试这些sqls并获得相同的结果'316'。

1 个答案:

答案 0 :(得分:3)

这是2.0.0中的错误,因为日期格式化程序在从字符串解析日期时使用UTC时区。当两个参数都是字符串类型时,这将正常工作,但是当其中一个参数是字符串类型而另一个是日期/时间戳类型时,它会给出不正确的结果,因为日期/时间戳值将根据日期的结果显示毫秒结果当地时区。 这已在2.3版本中修复。https://issues.apache.org/jira/browse/HIVE-15338

希望这有帮助。