Impala 在夏令时切换期间将输入时间转换为空

Impala converting input time to null during daylight savings switch

遇到一个奇怪的问题,在将时间戳从 PST 转换为 GMT 时,to_utc_timestamp 函数是 returning 空白。我可以看到这种情况仅在美国夏令时关闭的那一天发生了一个小时的范围。

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')

以上查询 return 空白输出。

然而,同样的事情在配置单元中工作正常:

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 版本 - v2.7.0 on CDH 5.10

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;