将 PostgreSQL 中的数据类型 varchar 更改为时间戳以及 空值 我有一列包含空行,很少有时间戳行。如何在 PostgreSQL 中将其转换为时间戳数据类型?
您需要一个
USING
子句将空字符串转换为 null
。
ALTER TABLE ...
ALTER COLUMN mycol
TYPE timestamp
USING (...conversion expression...)
在没有看到输入数据的情况下,很难准确地说出该表达式必须是什么,但它可能涉及
nullif
或 case
表达式以及 to_timestamp
函数和/或 CAST
到 timestamp
。
在 pgAdmin 控制台中,我使用此命令结合一个函数将 varchar 列转换为 timestamptz 或 null(如果转换不成功):
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);