9

我有一个创建时间戳和结束时间戳的列表,我想获得从创建到结束的最后秒数。如果不使用 UNIX 时间戳(我目前没有),找不到任何方法来做到这一点。

类似的东西:

datediff('second',min(creation_time),max(ending_time))

创建时间 = '2017-03-20 10:55:00' ..

4

2 回答 2

30

日期差异

date_diff('second', min(creation_time),max(ending_time))
于 2017-03-20T09:07:09.723 回答
1

unix_timestam()函数将日期转换为传递的秒数1970-01-01

SELECT 
  (unix_timestamp('2017-03-20 10:55:00') - unix_timestamp('2017-03-20 10:56:00'))

OK
-60

除以 60 得到分钟

编辑:上面的解决方案在 Hive 中有效。Presto 没有注释中提到的@nclark 的 unix_timestamp 。Presto中有to_unixtime函数,它返回DOUBLE,所以你需要将它转换为bigint。Presto 中的相同逻辑:

CAST(to_unixtime(max(ending_time)) AS BIGINT) - CAST(to_unixtime(min(creation_time)) AS BIGINT)
于 2017-03-20T09:07:01.527 回答