迄今为止的cast varchar类型

时间:2012-11-08 10:53:53

标签: postgresql datetime postgresql-9.1 type-conversion

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

我试着这样做:

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

但是我收到了一条错误消息:

  

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

1 个答案:

答案 0 :(得分:6)

当您将textvarchar投射到date时,您的安装的默认日期格式是预期的 - 具体取决于您postgresql.conf中的datestyle设置

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

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

ALTER TABLE table_name
ALTER COLUMN date_time type date
USING to_date(date_time, 'YYYY:MM:DD'); -- pattern for your example