3

我想将 PostgreSQL 数据库中的特定列从character_varyingtype 更改为 type date。日期格式为yyyy:mm:dd

我试着做:

alter table table_name
alter column date_time type date using (date_time::text::date);

但我收到一条错误消息:

日期/时间字段值超出范围:“2011:06:15”

4

1 回答 1

7

当您转换textvarchar转换date为时,安装的默认日期格式是预期的 - 取决于datestyle您的postgresql.conf.

通常,冒号 ( :) 是时间分隔符,在简单的转换中,PostgreSQL 可能会尝试将 '2011:06:15' 解释为时间 - 并且失败。

要消除歧义,请使用to_date()匹配的日期模式:

ALTER TABLE table_name
ALTER COLUMN date_time type date
USING to_date(date_time, 'YYYY:MM:DD'); -- pattern for your example
于 2012-11-08T17:21:09.890 回答