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

Amazon Redshift提取Timestamp时间报错求助

在Amazon Redshift中提取Datetime列的时间部分

嘿,我来帮你搞定这个Redshift提取时间的问题!因为Redshift基于PostgreSQL 8.0,有些高版本PostgreSQL的函数可能不兼容,但有几个靠谱的方法可以轻松提取出你要的时间部分。

方法1:使用TO_CHAR()函数(推荐)

这是最通用的方式,能直接把Timestamp转换成你想要的时间格式字符串:

SELECT TO_CHAR(your_datetime_column, 'HH24:MI:SS') AS time_part;

比如针对你给的示例值测试:

SELECT TO_CHAR('2017-11-06 13:03:28'::TIMESTAMP, 'HH24:MI:SS');

执行后会返回13:03:28。这里的HH24代表24小时制的小时,MI是分钟,SS是秒;如果需要12小时制的结果,可以把HH24换成HH,想要显示上下午的话再加AM或PM。

方法2:直接转换为TIME类型

如果需要得到TIME类型而不是字符串,可以用CAST()函数:

SELECT CAST(your_datetime_column AS TIME) AS time_part;

用你的示例测试:

SELECT CAST('2017-11-06 13:03:28'::TIMESTAMP AS TIME);

返回的是13:03:28的TIME类型值,要是需要字符串格式,再套一层CAST(... AS VARCHAR)就行。

排查报错的常见原因

如果执行时出错,大概率是这几个问题:

  • 列类型不匹配:如果你的列是VARCHAR类型,得先转换成TIMESTAMP再处理,比如:
    SELECT TO_CHAR(CAST(your_varchar_column AS TIMESTAMP), 'HH24:MI:SS') AS time_part;
    
  • 格式符错误:比如把HH24写成HH会得到12小时制结果,或者拼写错了格式符(比如把MI写成MIN),一定要注意Redshift支持的格式符规范。
  • NULL值影响:如果列里有NULL,可能会导致报错,用COALESCE()处理一下:
    SELECT TO_CHAR(COALESCE(your_datetime_column, CURRENT_TIMESTAMP), 'HH24:MI:SS') AS time_part;
    

完整示例

假设你的表叫user_actions,datetime列是action_time,查询所有记录的时间部分:

SELECT
    action_id,
    TO_CHAR(action_time, 'HH24:MI:SS') AS action_time_part
FROM user_actions;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:54:29