Presto SQL / Athena:如何从"interval day to second"仅返回小时,分钟和秒



>我有一个查询,它从两个时间戳计算差异并返回"间隔天到秒",如下所示:

SELECT (interval '1' second)*(timestamp_1 - timestamp_2) as time_delta

返回的结果如下所示:

|  time_delta
--+----------------
| 0 03:28:47.000
| 0 02:20:37.000
| 0 00:55:12.000
etc...

结果的 typeof(( 是"间隔天到秒"。

有没有办法只保留小时分钟和第二部分?这样我就会得到类似的东西:

|  time_delta
--+----------------
|   03:28:47
|   02:20:37
|   00:55:12

或者,至少,删除"日"部分?

提前谢谢。

Presto没有格式化interval值的函数。您的选择:

castvarchar+regexp_replace

presto:default> SELECT regexp_replace(CAST(parse_duration('3789s') AS varchar), '^0 (.*).000', '$1');
_col0
----------
01:03:09

hour()minute()second()函数+连接。format()功能大大简化了此操作,但这在 Athena 上尚不可用。

您应该能够对返回的时间戳使用 presto convienience 函数。看起来presto支持MySQL函数格式,所以你应该能够使用基于presto文档的date_parse

类似的东西

SELECT date_parse((interval '1' second)*(timestamp_1 - timestamp_2), %r) as time_delta

更多信息在这里: https://trino.io/docs/current/functions/datetime.html

最新更新