You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Athena/Presto中将时间差转换为DD HH MM格式?

在Athena/Presto中实现时间差格式化(DD HH MM)

直接通过算术运算拆分总分钟数,再拼接成目标格式即可,以下是完整SQL示例:

SELECT
    id,
    time_1,
    time_2,
    date_diff('minute', time_1, time_2) AS "datediff(minutes)",
    CONCAT(
        FLOOR(date_diff('minute', time_1, time_2) / (24 * 60)), 'd ',
        FLOOR(MOD(date_diff('minute', time_1, time_2), 24 * 60) / 60), 'h ',
        MOD(date_diff('minute', time_1, time_2), 60), 'm'
    ) AS "time difference"
FROM
    your_table_name;

逻辑说明:

  • 天数计算:总分钟数除以每天的分钟数(24*60),用FLOOR取整数部分得到天数
  • 小时计算:先取总分钟数除以每天分钟数的余数(即当天内的剩余分钟),再除以60得到小时数
  • 分钟计算:取剩余分钟数除以60的余数,得到最终的分钟部分
  • 拼接格式:用CONCAT把各部分按Xd Xh Xm的格式组合,自动适配0值(比如0天会显示0d)

如果担心重复计算date_diff影响效率,可以用子查询或CTE先算出总分钟数:

WITH time_diff_cte AS (
    SELECT
        id,
        time_1,
        time_2,
        date_diff('minute', time_1, time_2) AS total_minutes
    FROM your_table_name
)
SELECT
    id,
    time_1,
    time_2,
    total_minutes AS "datediff(minutes)",
    CONCAT(
        FLOOR(total_minutes / (24 * 60)), 'd ',
        FLOOR(MOD(total_minutes, 24 * 60) / 60), 'h ',
        MOD(total_minutes, 60), 'm'
    ) AS "time difference"
FROM time_diff_cte;

内容的提问来源于stack exchange,提问作者KaraiKare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:33:21