从unix_time计算开始时间和结束时间之间的差异(以秒为单位)yyyy-MM-dd HH:mm:ss

时间:2019-08-14 14:43:16

标签: sql hive hiveql hue seconds

我仍在学习SQL,但我在SQL Server或Postgreы上找到了几种解决方案,但在HUE上似乎无法使用 const Status = () => { const account = useSelector(state => state.account); const onClick = (nextLevel: Level) => { // cahngeLevel() is fetching, // and data is dispatched at the time of resolution. changeLevel(nextLevel); }; ... } ,只允许我计算两天之间的差额 秒,分钟不可用。非常欢迎您的帮助。

我能够用DATEDIFF分割时间戳,但是后来我找不到正确的方法来比较start_time并将其减去end_time以获得准确的秒数。我找不到时间函数,所以我假设我应该根据时间戳进行计算。获得为

substring_index

所需的输出

from_unixtime(unix_timestamp(start_time, "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"), 'yyyy-MM-dd HH:mm:ss') substring_index(start_time, 'T', -1)s_tm, substring_index(end_time, 'T', -1)e_tm start_date 2018-06-19 13:59:41 end_date 2018-06-19 14:01:17

1 个答案:

答案 0 :(得分:0)

Hive解决方案。

以秒为单位的差异:

select UNIX_TIMESTAMP('2018-06-19T14:01:17.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS")-
   UNIX_TIMESTAMP('2018-06-19T13:59:41.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS") as seconds_diff

结果:

96

现在计算HH:mm:ss:

的差异
select concat_ws(':',lpad(floor(seconds_diff/3600),2,'0'),        --HH
                     lpad(floor(seconds_diff%3600/60),2,'0'),     --mm
                     lpad(floor(seconds_diff%3600%60),2,'0')      --ss
       )

from
(
select --calculate seconds difference
       UNIX_TIMESTAMP('2018-06-19T14:01:17.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS")-
       UNIX_TIMESTAMP('2018-06-19T13:59:41.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS") as seconds_diff
) s

结果:

OK
00:01:36
Time taken: 1.071 seconds, Fetched: 1 row(s)

另请参阅以下有关格式转换的答案:https://stackoverflow.com/a/23520257/2700344

相关问题