遇到一个奇怪的问题,在将时间戳从PST转换为GMT时,to_utc_timestamp函数返回空白。我可以看到,这种情况仅在美国关闭夏令时的一天中才会发生。
Query: select to_utc_timestamp(cast('2017-11-05 01:00:00' as timestamp),'PST')
Query: select to_utc_timestamp(cast('2017-11-05 01:59:59' as timestamp),'PST')
以上查询返回空白输出。
但是,相同的情况在 hive 中也可以正常工作:
Query: select to_utc_timestamp(cast('2017-11-05 01:00:00' as timestamp),'PST')
OK
2017-11-05 09:00:00
Query: select to_utc_timestamp(cast('2017-11-05 01:59:59' as timestamp),'PST')
OK
2017-11-05 09:59:59
需要帮助来了解相同的原因,以及如何使用Impala查询本身解决此问题。
Impala版本-CDH 5.10上的v2.7.0
Hive版本-CDH 5.10上的1.1.0
最佳答案
我使用的是与您相同的Impala和CDH版本,并且存在相同的错误。但是,此解决方法将在Impala中获得正确的答案:
select case
when
cast('2017-11-05 01:00:00' as timestamp) >= '2017-11-05 01:00:00' and
cast('2017-11-05 01:00:00' as timestamp) <= '2017-11-05 01:59:59'
then
hours_sub(to_utc_timestamp(hours_add('2017-11-05 01:00:00', 1), 'PST'), 1)
else
to_utc_timestamp(cast('2017-11-05 01:00:00' as timestamp), 'PST') end;
关于hadoop - 在夏令时切换期间,Impala将输入时间转换为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47200222/