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

Redshift外部表不支持time类型,如何存储03:13:00格式时间?

Redshift外部表创建:time类型替代方案

问题场景

创建Redshift外部表时执行以下语句:

CREATE EXTERNAL TABLE model.fixed_hours (
 id int,
 something_time time,
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION .......;

遇到错误:

SQL Error [42804]: ERROR: Unsupported data type "pg_catalog.time" for external table creation

解决方案

Redshift外部表不支持原生time类型,针对03:13:00这种纯时间格式的存储,有两种可行方案:

  • 方案一:使用varchar类型
    直接定义为varchar(8)来存储固定格式的时间字符串,匹配HH:MI:SS的长度。修改后的表创建语句如下:

    CREATE EXTERNAL TABLE model.fixed_hours (
     id int,
     something_time varchar(8),
    )
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
    STORED AS
    INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
    LOCATION .......;
    

    这种方式简单直接,能精准存储目标格式的时间字符串,后续查询时如果需要时间运算,可以通过to_time函数将字符串转换为时间类型使用。

  • 方案二:使用timestamp类型(若需关联日期)
    如果业务场景中后续需要将时间与日期结合进行运算,可以定义为timestamp类型,存储时补充一个默认日期(比如1970-01-01 03:13:00)。这种方式适合需要时间维度计算的场景,但会额外存储日期部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:55:50