无法将4位int值转换为24小时时间格式

时间:2018-04-22 03:42:04

标签: hive hiveql

我的输入数据格式为4位数字,代表24小时时间格式。我试图找到2个这样的字段之间的分钟时间差 - 预期到达时间和预定到达时间(以分钟为单位)。为此我需要将4位int值转换为24小时时间格式,但我无法这样做。

我尝试了无数的排列和组合,但无济于事。

  • 预计抵达时间:1902年
  • 预定抵达时间:1806
  • 预期成果:56

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

这两次之间的差异是 56分钟

预计抵达时间:1902年( 07:02 PM )//从晚上7:00起2分钟

预定抵达时间:1806( 06:06 PM )// 54分钟到晚上7:00

select (unix_timestamp('1902','HHmm') - unix_timestamp('1806',"HHmm"))/60;
+-------+--+
|  _c0  |
+-------+--+
| 56.0  |
+-------+--+

(或)

select int((unix_timestamp('1902','HHmm') - unix_timestamp('1806',"HHmm"))/60);
+------+--+
| _c0  |
+------+--+
| 56   |
+------+--+

答案 1 :(得分:0)

(t2 / 100) * 60 + t2 % 100
   - (t1 / 100) * 60 - t1 % 100
+ case when t2 < t1 then 1440 else 0 end

我假设这两次可以跨越午夜。