迄今为止的cast varchar类型

Lo *_*rri 2 postgresql datetime type-conversion postgresql-9.1

我想将PostgreSQL数据库中的特定列从character_varying类型更改为类型date.日期采用格式yyyy:mm:dd

我试着这样做:

alter table table_name
alter column date_time type date using (date_time::text::date);
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息:

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

Erw*_*ter 6

当你施放textvarchardate您的安装的默认日期格式预期-这取决于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
Run Code Online (Sandbox Code Playgroud)