【问题标题】:Cast varchar type to date将 varchar 类型转换为日期
【发布时间】:2012-10-28 13:34:20
【问题描述】:

我想将 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”

【问题讨论】:

    标签: postgresql datetime postgresql-9.1 type-conversion


    【解决方案1】:

    当您将textvarchar 转换为date 时,预计安装的默认日期格式 - 取决于您的postgresql.conf 中的datestyle 设置。

    一般来说,冒号 (:) 是一个 时间 分隔符,在简单的转换中,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
    

    【讨论】:

    • 非常感谢,它有效!但是现在我对小时列有同样的问题。这是一个字符串,我想按时间类型对其进行转换,但我不知道该怎么做。你能帮我解决这个问题吗?提前致谢。
    • @LoBizzarri:to_timestamp() 的小菜一碟。您是否按照我提供的链接进行操作?如果它仍然给您静态,请发布另一个问题,并举例说明您拥有什么以及您想要什么。
    • 对不起,昨天我在命令行中犯了一个错误。现在好了,谢谢!我用过:ALTER TABLE table_name ALTER COLUMN hour_time type time USING to_timestamp(hour_time, 'HH24:MI:SS');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 2019-12-20
    • 1970-01-01
    相关资源
    最近更新 更多