簡體   English   中英

Presto SQL / Athena:如何僅返回小時、分鍾和秒,從“間隔天到秒”

[英]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值的功能。 您的選擇:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM