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

PostgreSQL中如何将character varying转换为timestamp?含报错解决

解决PostgreSQL中ISO格式字符串转timestamp的问题

嘿,这个问题我太熟悉了!你踩了PostgreSQL里引号使用的常见坑——

你用双引号包裹了时间字符串,但在PostgreSQL的语法里,双引号是用来引用数据库对象(比如列名、表名这类标识符)的,所以数据库直接把"2020-09-21T13:56:58Z"当成了一个列名来查找,自然就报“列不存在”的错误啦。

正确的转换方法

方法1:修正引号,使用to_timestamp函数

把包裹字符串的双引号换成单引号,同时注意格式字符串里的T和Z是固定的字面量,需要用单引号括起来(告诉数据库这不是格式占位符):

SELECT to_timestamp('2020-09-21T13:56:58Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"');

方法2:更简单的直接转换(强烈推荐)

幸运的是,你的时间字符串是标准的ISO 8601格式,PostgreSQL原生支持这种格式的自动解析,完全不用手动指定格式,直接用类型转换运算符::或者CAST()函数就能搞定:

用::的简洁写法:

SELECT '2020-09-21T13:56:58Z'::timestamp;

用CAST()的标准写法:

SELECT CAST('2020-09-21T13:56:58Z' AS timestamp);

这两种方式都会自动识别末尾的Z(代表UTC时区),准确转换为对应的timestamp值。

针对表字段的转换示例

如果是要转换表中character varying类型的字段(比如字段名叫event_time),直接把字符串替换成字段名即可:

SELECT event_time::timestamp FROM your_table_name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:46:45