You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL UPDATE语句技术问询:如何仅修改TableA指定行日期年份为2022

正确的UPDATE语句写法

原语句的问题在于直接给DATE类型字段赋值字符串'2021',既不符合DATE类型的赋值规则,也没有保留原日期的月份和日期部分。以下是不同主流数据库的正确写法:

MySQL/MariaDB

使用日期运算函数直接调整年份,无需字符串转换:

UPDATE TableA
SET Column1 = DATE_ADD(Column1, INTERVAL (2022 - YEAR(Column1)) YEAR)
WHERE Column2 = 10;

或者通过字符串拼接转换(兼容性更广):

UPDATE TableA
SET Column1 = STR_TO_DATE(CONCAT('2022-', DATE_FORMAT(Column1, '%m-%d')), '%Y-%m-%d')
WHERE Column2 = 10;

PostgreSQL

利用MAKE_DATE函数构造新日期:

UPDATE TableA
SET Column1 = MAKE_DATE(2022, EXTRACT(MONTH FROM Column1)::INTEGER, EXTRACT(DAY FROM Column1)::INTEGER)
WHERE Column2 = 10;

SQL Server

使用DATEFROMPARTS函数生成新日期:

UPDATE TableA
SET Column1 = DATEFROMPARTS(2022, MONTH(Column1), DAY(Column1))
WHERE Column2 = 10;

这些语句都会仅将符合条件行的Column1年份修改为2022,同时保留原日期的月份和日期信息,且正确适配DATE类型字段的赋值要求。

内容的提问来源于stack exchange,提问作者Kh Ab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 04:26:55