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
中的日期格式字符串
在 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
中的日期格式字符串