PostgreSQL如何从日期列提取年份并更新到同表新增的year列
实现方案
直接执行UPDATE语句即可完成同表字段的批量更新,不需要额外做关联匹配,语句如下:
UPDATE test_tb SET year = EXTRACT(YEAR FROM tdate);
如果你的year字段定义为整数类型,对提取结果做类型转换即可:
UPDATE test_tb SET year = EXTRACT(YEAR FROM tdate)::INTEGER;
注意事项
- 若表数据量较大,建议先在事务中操作验证,避免误修改数据:
- 开启事务:
BEGIN; - 执行上述更新语句
- 验证更新结果是否符合预期:
SELECT tdate, year FROM test_tb LIMIT 20; - 确认无误提交事务:
COMMIT; - 若结果错误可直接回滚:
ROLLBACK;
- 开启事务:
- 如果你使用的是PostgreSQL 12及以上版本,还可以直接将
year列设置为生成列,后续插入、更新数据时会自动维护年份值,无需手动执行更新语句:-- 还未创建year列时可直接执行该语句 ALTER TABLE test_tb ADD COLUMN year INTEGER GENERATED ALWAYS AS (EXTRACT(YEAR FROM tdate)::INTEGER) STORED;
内容的提问来源于stack exchange,提问作者Num3illia
相关产品推荐
相关产品推荐

