(postgreSQL数据库)
我的日期列似乎是' yyyy-mm-dd'首先,我想将该列转换为“yyyymm'。
之后,我想将该列克隆到同一个表格中的另一列,我将其称为"年份"而且我需要以“yyyy'仅
我还没有找到一个适用于我的案例的简单解决方案,而且这个解决方案非常基本,因为我一般都是SQL的新手。
最后,我希望列与此类似(不包括其他现有列)
date /*already exists*/ year /*need to create*/
201501 2015
201501 2015
201502 2015
201606 2016
干杯
答案 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。
它解释说,使用数据从头开始创建表可能更快,而不是更新每一行。