Hive 无法将4位整数值转换为24小时时间格式

Hive 无法将4位整数值转换为24小时时间格式,hive,hiveql,Hive,Hiveql,我的输入数据格式为4位数字,表示24小时时间格式。我试图找到两个这样的字段之间的时差(以分钟为单位)——预计到达时间和计划到达时间(以分钟为单位)。为此,我需要将4位int值转换为24小时时间格式,但我无法这样做 我尝试过无数的排列和组合,但都没有用 预计到达时间:1902 预计到达时间:1806 预期结果:56 任何帮助都将不胜感激。这两次的时间相差56分钟 预计到达时间:1902(07:02 PM)//从晚上7:00开始2分钟 预定到达时间:1806(06:06 PM)//54分钟至晚上

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

我尝试过无数的排列和组合,但都没有用

  • 预计到达时间:1902
  • 预计到达时间:1806
  • 预期结果:56

任何帮助都将不胜感激。

这两次的时间相差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  |
+-------+--+
(或)

(t2/100)*60+t2%100
-(t1/100)*60-t1%100
+当t2

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

谢谢。这是可行的,但在少数情况下,我无法得到预期的结果。就像我的Field1是919,Field2是920,所以差值应该是-1。然而,代码将其计算为-51。奇怪的是,大约有1200万条记录,我只看到160万条记录。对于这个案例,请使用用例语句并比较field1和field2的长度,选择长度('919')为'3'然后是int((unix_timestamp('919','Hmm')-unix_timestamp('920','Hmm'))/60)当长度('9199')为'4'然后是int((unix_timestamp('1902','HHmm'))-unix_时间戳('1806',“HHmm”)/60)否则为空;我比较了3,4位整数,就像写所有可能的case语句一样,如果是3位,那么Hmm,如果是4位,那么HH:mm
select int((unix_timestamp('1902','HHmm') - unix_timestamp('1806',"HHmm"))/60);
+------+--+
| _c0  |
+------+--+
| 56   |
+------+--+
(t2 / 100) * 60 + t2 % 100
   - (t1 / 100) * 60 - t1 % 100
+ case when t2 < t1 then 1440 else 0 end