[英]Presto SQL / Athena: how to return only hours, minutes and seconds, from "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
值的功能。 您的選擇:
cast
為varchar
+ 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.