SQL Athena/Presto 将持续时间转换为 DD HH MM 格式

问题描述 投票:0回答:1

我的表有 2 列时间戳。我的目标是获得这 2 个时间戳列之间的差异,但格式应该是 DD HH MM。

表格如下所示:

使用 date_diff 函数,我可以得到以分钟为单位的时差,但我不知道下一步该做什么。我想要的是如下表:

身份证 时间1 时间2 日期差异(分钟) 时差
A 2023-06-01 07:30:12 2023-06-12 10:31:54 16021 11天3小时1米
B 2023-06-01 09:30:45 2023-06-01 10:31:50 61 0天1小时1米

知道如何在 Athena/Presto 中做到这一点吗?谢谢你的帮助

sql amazon-athena presto trino
1个回答
0
投票

您可以减去两个日期,得到

interval day to second
,然后“手动”格式化:

-- sample data
WITH dataset (id, Time1, Time2) AS (
    values
        ('A',   timestamp '2023-06-01 07:30:12', timestamp '2023-06-12 10:31:54'),
        ('B',   timestamp '2023-06-01 09:30:45', timestamp '2023-06-01 10:31:50')
)

-- query
select *,
    date_diff('minute', time1, time2) "datediff(minutes)",
    cast(day(Time2 - Time1) as varchar) || 'd ' || cast(hour(Time2 - Time1) as varchar) || 'd ' || cast(minute(Time2 - Time1) as varchar) || 'm'
from dataset;

输出:

id 时间1 时间2 日期差异(分钟) _col4
A 2023-06-01 07:30:12 2023-06-12 10:31:54 16021 11d 3d 1m
B 2023-06-01 09:30:45 2023-06-01 10:31:50 61 0d 1d 1m
© www.soinside.com 2019 - 2024. All rights reserved.