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

Trino中如何处理trip_duration并保留Timestamp类型?

Trino中处理时长字段的解决方案

首先明确:直接将截取后的“0:00:08”格式字符串转为Timestamp不可行。因为Timestamp类型代表的是具体日期时间点(如2024-05-20 12:30:45),而“0:00:08”是时长信息,不符合Timestamp的格式规范,自然无法转换成功。

正确的处理思路是用Trino的INTERVAL类型存储时长(而非Timestamp),具体操作步骤如下:

  1. 截取目标字符串片段
    原始trip_duration格式为“0 00:00:15.216”,需要去掉前2个字符(“0 ”)和后4个字符(“.216”),用substring函数实现:

    substring(cast(trip_duration as varchar), 3, length(cast(trip_duration as varchar)) - 6)
    

    执行后会得到“00:00:15”格式的字符串。

  2. 转换为INTERVAL类型
    将截取后的字符串转为INTERVAL HOUR TO SECOND类型,既能正确存储时长信息,也保留了时长的计算能力:

    cast(
      substring(cast(trip_duration as varchar), 3, length(cast(trip_duration as varchar)) - 6)
      as interval hour to second
    ) as processed_trip_duration
    
  3. 调整为“0:00:08”格式(可选)
    如果需要去掉小时部分的前导零,用replace函数处理即可:

    cast(
      replace(
        substring(cast(trip_duration as varchar), 3, length(cast(trip_duration as varchar)) - 6),
        '00:', '0:'
      ) as interval hour to second
    ) as processed_trip_duration
    

如果仅需要展示“0:00:08”格式,直接保留字符串类型即可,但会失去时长的计算特性,建议优先使用INTERVAL类型匹配业务语义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:55:03