postgresql - PostgreSQL。如何将现有列中的 varchar 格式日期转换为日期格式日期
问题描述
我对 PostgreSQL 很陌生。我查看了其他现有线程、文档和各种谷歌搜索,但仍然无法完全理解是否可以将列date
中实际为字符串的现有值转换varchar
为实际日期格式。
该列已命名datelaid
并具有varchar
数据类型。该表名为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');
推荐阅读
- c# - Dockerized ASP.NET Core 应用程序未创建文件夹
- java - 未经检查地调用 ... 作为原始类型的成员
- c++ - C++ STL 向量前值未清除
- laravel - 使用 Comeonin 将 bcrypt 密码哈希从 Laravel 应用程序迁移到 Elixir 应用程序
- python - Python 3 通过 readline 将空字符串添加到列表中
- python - 如何展平熊猫数据框的每一行?
- javascript - 需要使用Javascript在给定日期的日历季度中查找周数
- xml - PLOT TWIST:如何组合多个 XML 文件并输出多个节点?
- rest - 检查 POST 服务方法中的 API 请求限制是否违反 REST?
- excel - 为什么这个对多维 vba 数组的简单赋值会引发语法错误