PostgreSQL。如何将现有列中的 varchar 格式日期转换为日期格式日期

PostgreSQL. How to convert varchar format dates in an existing column to date format dates

我对 PostgreSQL 还很陌生。我查看了其他现有线程、文档和各种 google 搜索,但仍然无法完全理解是否可以转换现有 date 值,这些值实际上是 varchar 中的字符串列转换为实际的日期格式。

该列名为 datelaid,数据类型为 varchar。 table 被命名为 init_sa_mains_1

延迟:

" "
"01-12-2011"
"01-12-2011"
" "
"01-12-2011"
" "

我尝试按如下方式更改列的数据类型,但没有成功:

ALTER TABLE init_sa_mains_1
    ALTER COLUMN datelaid TYPE date USING datelaid::date;

ALTER TABLE init_sa_mains_1
   CAST(init_sa_mains_1.datelaid as date);

ALTER TABLE init_sa_mains_1 
  ALTER COLUMN datelaid USING datelaid::date;

ALTER TABLE init_sa_mains_1
  ALTER COLUMN datelaid TYPE date;
     USING to_date(datelaid, 'DD-MM-YYYY');

任何人都可以建议一个可能的解决方案吗?

您将需要处理空字符串,因为它们无法像那样进行转换。但是你可以把它们变成 NULL 值:

ALTER TABLE init_sa_mains_1
  ALTER COLUMN datelaid TYPE date;
     USING to_date(nullif(trim(datelaid),''), 'DD-MM-YYYY');