将 PostgreSQL 中的数据类型 varchar 更改为时间戳以及空值

问题描述 投票:0回答:2

将 PostgreSQL 中的数据类型 varchar 更改为时间戳以及 空值 我有一列包含空行,很少有时间戳行。如何在 PostgreSQL 中将其转换为时间戳数据类型?

postgresql casting timestamp type-conversion varchar
2个回答
1
投票

您需要一个

USING
子句将空字符串转换为
null

ALTER TABLE ... 
  ALTER COLUMN mycol 
    TYPE timestamp 
    USING (...conversion expression...)

在没有看到输入数据的情况下,很难准确地说出该表达式必须是什么,但它可能涉及

nullif
case
表达式以及
to_timestamp
函数和/或
CAST
timestamp


0
投票

在 pgAdmin 控制台中,我使用此命令结合一个函数将 varchar 列转换为 timestamptznull(如果转换不成功):

create or replace function converter_to_timestamp(arg text)
returns timestamptz
as $$
    begin
        return arg::timestamptz;
    exception when others then
        return null;
    end;
$$ language plpgsql;

alter table client 
  alter column birthday type timestamptz 
   using converter_to_timestamp(birthday);
© www.soinside.com 2019 - 2024. All rights reserved.