我想计算事件之间的差异。这两个事件都以毫秒为单位存储在UNIX_TIMESTAMP中。
以下是一个例子:1464740049000
如何转换时差并以小时为单位格式化。
我尝试了一些像datediff和/或timestamp(event1) - timestamp(event2)。
我想要的是
选择时间戳(e1.time),时间戳(e2.time),e1.time-e2.time为 来自testdata的Time_Diff;
Time_Diff应格式化为小时,分钟,秒...... 我怎么能得到这个? 提前致谢 彼得
答案 0 :(得分:0)
如果您对仅限小时感兴趣,而不是将unixtimestamp转换为时间戳,只需使用SQL数学函数
select (time2 - time1)/(1000 * 60 * 60) as hours from mytable;
答案 1 :(得分:0)
如果差异小于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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+