我想将 PostgreSQL 数据库中的特定列从character_varying
type 更改为 type date
。日期格式为yyyy:mm:dd
我试着做:
alter table table_name
alter column date_time type date using (date_time::text::date);
但我收到一条错误消息:
日期/时间字段值超出范围:“2011:06:15”
我想将 PostgreSQL 数据库中的特定列从character_varying
type 更改为 type date
。日期格式为yyyy:mm:dd
我试着做:
alter table table_name
alter column date_time type date using (date_time::text::date);
但我收到一条错误消息:
日期/时间字段值超出范围:“2011:06:15”
当您转换text
或varchar
转换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