MySQL中如何从DATE列提取年份并插入新列
如何从DATE列提取年份并创建新列
1. 新增存储年份的列
先给你的表添加一个专门存年份的列,推荐用INT类型(方便后续数值计算),把your_table_name替换成你的实际表名:
ALTER TABLE your_table_name ADD COLUMN year_col INT;
2. 批量填充年份数据
你之前用的YEAR()或EXTRACT()不仅能用于查询,也可以在UPDATE语句里批量写入数据:
- MySQL/MariaDB 写法:
UPDATE your_table_name SET year_col = YEAR(date);
- PostgreSQL 写法:
UPDATE your_table_name SET year_col = EXTRACT(YEAR FROM date)::INT;
- SQL Server 写法:
UPDATE your_table_name SET year_col = DATEPART(YEAR, date);
3. 进阶:创建自动同步的生成列(推荐)
如果你的数据库支持生成列(MySQL 5.7+、PostgreSQL 12+、SQL Server 2016+),可以直接创建一个自动跟随date列更新的年份列,无需手动执行UPDATE,后续新增或修改date数据时,年份列会自动同步:
- MySQL/MariaDB:
ALTER TABLE your_table_name ADD COLUMN year_col INT GENERATED ALWAYS AS (YEAR(date)) STORED;
- PostgreSQL:
ALTER TABLE your_table_name ADD COLUMN year_col INT GENERATED ALWAYS AS (EXTRACT(YEAR FROM date)::INT) STORED;
- SQL Server:
ALTER TABLE your_table_name ADD COLUMN year_col AS DATEPART(YEAR, date) PERSISTED;
注意要点
- 操作前建议备份表数据,避免误操作导致数据丢失;
- 如果是大表,
UPDATE语句执行时间可能较长,尽量在业务低峰期操作。
内容的提问来源于stack exchange,提问作者Czar19
相关产品推荐
相关产品推荐

