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

在Amazon Redshift中将文本列转Timestamp遇报错求助

解决Redshift中字符串转Timestamp的报错问题

Redshift转换字符串到timestamp时,对输入格式的长度和规范有严格要求,你的completed_on字段末尾的(India Standard Time)属于冗余内容,既导致字符串长度超标,也不符合timestamp的预期格式,所以触发报错。

以下是两种可行的解决方法:

方法一:正则替换冗余内容

用regexp_replace去掉末尾的括号及内部内容,保留有效时间部分后再转换:

SELECT CAST(REGEXP_REPLACE(completed_on, ' \([^)]+\)$', '') AS TIMESTAMP) AS converted_completed_on
FROM your_table;

正则表达式' \([^)]+\)$'会精准匹配字段末尾的「空格+括号+括号内所有内容」,将其替换为空,得到Redshift可识别的时间字符串"Thu Jan 27 2022 11:55:12 GMT+0530"。

方法二:固定长度截取

如果你的时间字符串格式完全固定,也可以直接截取前33个字符(刚好到GMT偏移部分)再转换:

SELECT CAST(SUBSTRING(completed_on, 1, 33) AS TIMESTAMP) AS converted_completed_on
FROM your_table;

如果需要保留时区信息,也可以转换为TIMESTAMPTZ类型(带时区的timestamp),Redshift会自动处理时区偏移:

SELECT CAST(REGEXP_REPLACE(completed_on, ' \([^)]+\)$', '') AS TIMESTAMPTZ) AS converted_completed_on
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:15:34