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