HIVE 中的时差计算给出了错误的答案

Time Difference Calculation in HIVE gives wrong answer

在 HIVE 中计算时差,在 hours:minutes:seconds 中需要它。我得到的答案不太正确。

这是我试过的查询

SELECT from_unixtime(UNIX_TIMESTAMP('2019-01-01 12:00:00') - UNIX_TIMESTAMP('2019-01-01 10:10:10'),'hh:mm:ss');

我得到的答案是07:49:50

我要如何重构代码才能得到答案01:49:50

@user2510479

如@mazaneicha 所述,from_unixtime 函数转换为当前系统时区,这导致您的结果为 07:49:50 而不是 01:49:50

要获得预期结果(如果您更喜欢使用 Hive 函数),您可以将 from_unixtime 输出转换为 UTC 并使用 date_format(从 Hive 1.2.0 开始)link在它上面获得所需的输出

SELECT date_format(to_utc_timestamp(from_unixtime( 
      (UNIX_TIMESTAMP('2019-01-01 12:00:00') 
     - UNIX_TIMESTAMP('2019-01-01 10:10:10')) ),'EST'), 'HH:mm:ss')

您可以参考link

中的日期格式字符串