SQL 克隆和转换日期列

标签 sql postgresql

(postgreSQL 数据库)

我有一个日期列,格式似乎是“yyyy-mm-dd”,首先我想将该列转换为“yyyymm”。

之后,我想将该列克隆到同一个表中的另一列,我将其称为“年”,并且我只需要使用“yyyy”格式。

我还没有找到一个适用于我的案例的简单解决方案,而且这已经足够基本了,因为我通常是 SQL 的新手。

最后我希望列是这样的(不包括其他现有列)

   date /*already exists*/  year /*need to create*/
   201501                   2015
   201501                   2015
   201502                   2015
   201606                   2016

干杯

最佳答案

这对你有帮助吗?

这是使用 TO_CHAR 函数中的内置日期格式。不过,我对 postgresql 并不完全熟悉,因此可能需要进行一些调整。

UPDATE
    TABLENAME
SET
    year = TO_CHAR(date, 'YYYY'),
    date = TO_CHAR(date, 'YYYYMM');

如果“年”列不存在,您必须先使用 ALTER TABLE 语句创建它

ALTER TABLE [table_name] ADD COLUMN [column_name] [data_type] {collation} {column_contstraint};

我建议检查 documentation正确使用。

编辑:如果您担心更新所有行所需的时间(我看到您在另一个答案中评论说您有大约 200 万条记录),那么我建议阅读 this post .

它解释了用数据从头开始创建表而不是更新每一行可能会更快。

关于SQL 克隆和转换日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589085/

相关文章:

asp.net - SQL select 返回值到变量

mysql - 将 SQL 文件导入现有数据库表 (phpmyadmin)

postgresql - Spring Boot JPA 数据库选择

postgresql - postgres - 在事务提交之前触发

postgresql - 是否可以将 LEFT JOIN 推迟到仅适用于匹配的行?

mySQL 查询计数不同和百分比

mysql - PostgreSQL 中的更新顺序

sql - 关于微服务架构中容器的可扩展性

ruby-on-rails - 使用 postgres 在 ruby​​/rails 中准备好语句

ruby-on-rails - 我可以在没有开始...结束的情况下将重试放在救援 block 中吗?