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

PostgreSQL现有表添加生成列报错求助:语法错误排查

问题解决:PostgreSQL生成列添加报错

错误原因

你的SQL语句存在两个关键问题:

  1. 表达式中timestamp("dateTime")语法错误:dateTime本身已经是timestamp类型,无需用timestamp()函数转换,这种写法导致PostgreSQL解析失败。
  2. 生成列类型与表达式结果不匹配:你定义生成列类型为timestamp without time zone,但表达式最后转成了date类型,类型冲突。

正确SQL语句

根据你的需求选择对应语句:

情况1:生成date类型的日期列

如果只需要日期部分(无时间),将生成列类型设为date:

ALTER TABLE public.transaction
ADD COLUMN "transactionDate" date GENERATED ALWAYS AS ("dateTime"::date) STORED;

情况2:生成timestamp类型的日期列(时间为00:00:00)

如果要保留timestamp类型但仅保留日期部分,使用date_trunc函数:

ALTER TABLE public.transaction
ADD COLUMN "transactionDate" timestamp without time zone GENERATED ALWAYS AS (date_trunc('day', "dateTime")) STORED;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:01:16