Presto SQL / Athena: 如何 return 仅小时、分钟和秒,来自 "interval day to second"
Presto SQL / Athena: how to return only hours, minutes and seconds, from "interval day to second"
我有一个查询,它根据两个时间戳计算差异,returns 结果是 "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() 结果是 "interval day to second".
有没有办法只保留时分和秒?这样我就会得到类似的东西:
| time_delta
--+----------------
| 03:28:47
| 02:20:37
| 00:55:12
或者至少删除 "day" 部分?
提前致谢。
您应该能够使用 presto 便捷功能获取您返回的时间戳。看起来 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
Presto 没有格式化 interval
值的功能。您的选择:
cast
到 varchar
+ regexp_replace
:
presto:default> SELECT regexp_replace(CAST(parse_duration('3789s') AS varchar), '^0 (.*)\.000', '');
_col0
----------
01:03:09
或 hour()
、minute()
和 second()
函数 + 连接。
format()
函数大大简化了这一点,但 Athena 上尚不可用。
我有一个查询,它根据两个时间戳计算差异,returns 结果是 "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() 结果是 "interval day to second".
有没有办法只保留时分和秒?这样我就会得到类似的东西:
| time_delta
--+----------------
| 03:28:47
| 02:20:37
| 00:55:12
或者至少删除 "day" 部分?
提前致谢。
您应该能够使用 presto 便捷功能获取您返回的时间戳。看起来 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
Presto 没有格式化 interval
值的功能。您的选择:
cast
到 varchar
+ regexp_replace
:
presto:default> SELECT regexp_replace(CAST(parse_duration('3789s') AS varchar), '^0 (.*)\.000', '');
_col0
----------
01:03:09
或 hour()
、minute()
和 second()
函数 + 连接。
format()
函数大大简化了这一点,但 Athena 上尚不可用。