繁体   English   中英

HIVE-时差格式

[英]HIVE - Format of time difference

我想计算事件之间的差异。 这两个事件都以毫秒为单位存储在UNIX_TIMESTAMP中。

这是一个示例:1464740049000

如何转换时差并将其格式化为小时。

我尝试了几件事,例如datediff和/或timestamp(event1)-timestamp(event2)。

我想要的是

从测试数据中选择timestamp(e1.time),timestamp(e2.time),e1.time-e2.time作为Time_Diff;

Time_Diff的格式应为小时,分钟,秒...如何获取此格式? 预先感谢彼得

如果您仅对小时感兴趣,则无需使用unixtimestamp转换为timestamp,而只需使用SQL Mathematical函数

select (time2 - time1)/(1000 * 60 * 60) as hours from mytable; 

如果差异少于24小时,则可以使用以下方法:

[localhost:21000] > select from_unixtime(1392394861 - 1392394860, 'HH:mm:ss');
+----------------------------------------------------+
| from_unixtime(1392394861 - 1392394860, 'hh:mm:ss') |
+----------------------------------------------------+
| 00:00:01                                           |
+----------------------------------------------------+

如果差异可能超过24小时,则以下丑陋的表达式将解决问题:

[localhost:21000] > select concat(cast(floor((1392394861 - 1392300000)/60/60) as string), from_unixtime(1392394861 - 1392300000, ':mm:ss'));
+----------------------------------------------------------------------------------------------------------------------+
| concat(cast(floor((1392394861 - 1392300000) / 60 / 60) as string), from_unixtime(1392394861 - 1392300000, ':mm:ss')) |
+----------------------------------------------------------------------------------------------------------------------+
| 26:21:01                                                                                                             |
+----------------------------------------------------------------------------------------------------------------------+

或者,如果您希望使用带有明确日期的格式:

[localhost:21000] > select concat(cast(floor((1392394861 - 1392300000)/60/60/24) as string), " days and ", from_unixtime(1392394861 - 1392300000, 'HH:mm:ss'));
+-------------------------------------------------------------------------------------------------------------------------------------------+
| concat(cast(floor((1392394861 - 1392300000) / 60 / 60 / 24) as string), ' days and ', from_unixtime(1392394861 - 1392300000, 'hh:mm:ss')) |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| 1 days and 02:21:01                                                                                                                       |
+-------------------------------------------------------------------------------------------------------------------------------------------+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM