Amazon Athena / Presto 中的时间差异(秒和分钟)
Time diff in Amazon Athena / Presto (seconds and minutes )
我有一个创建时间戳和结束时间戳的列表,我想获取从创建到结束的最后秒数。如果不使用 UNIX 时间戳(我目前没有),找不到任何方法来做到这一点。
类似的东西:
datediff('second',min(creation_time),max(ending_time))
creation_time = '2017-03-20 10:55:00' ..
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。正如@nclark 在评论中提到的那样,Presto 没有 unix_timestamp 。 Presto 中有 to_unixtime 函数,它是 returns DOUBLE,因此您需要将其转换为 bigint。 Presto 中的相同逻辑:
CAST(to_unixtime(max(ending_time)) AS BIGINT) - CAST(to_unixtime(min(creation_time)) AS BIGINT)
date_diff
date_diff('second', min(creation_time),max(ending_time))
我有一个创建时间戳和结束时间戳的列表,我想获取从创建到结束的最后秒数。如果不使用 UNIX 时间戳(我目前没有),找不到任何方法来做到这一点。
类似的东西:
datediff('second',min(creation_time),max(ending_time))
creation_time = '2017-03-20 10:55:00' ..
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。正如@nclark 在评论中提到的那样,Presto 没有 unix_timestamp 。 Presto 中有 to_unixtime 函数,它是 returns DOUBLE,因此您需要将其转换为 bigint。 Presto 中的相同逻辑:
CAST(to_unixtime(max(ending_time)) AS BIGINT) - CAST(to_unixtime(min(creation_time)) AS BIGINT)
date_diff
date_diff('second', min(creation_time),max(ending_time))