SQL克隆和转换日期列

时间:2017-01-11 11:00:23

标签: sql postgresql

(postgreSQL数据库)

我的日期列似乎是' yyyy-mm-dd'首先,我想将该列转换为“yyyymm'。

之后,我想将该列克隆到同一个表格中的另一列,我将其称为"年份"而且我需要以“yyyy'仅

我还没有找到一个适用于我的案例的简单解决方案,而且这个解决方案非常基本,因为我一般都是SQL的新手。

最后,我希望列与此类似(不包括其他现有列)

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

干杯

2 个答案:

答案 0 :(得分:2)

要添加新列,请运行

ALTER TABLE mytable ADD year character varying(4);

如果桌子上没有锁,那应该很快完成。

要修改数据,请运行

UPDATE mytable
SET date = substr(date, 1, 4) || substr(date, 6, 2),
    year = substr(date, 1, 4);

答案 1 :(得分:2)

这对你有帮助吗?

这是在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

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