当前位置: 首页 > news >正文

UPDATE ... SET 多字段赋值

update afinfo set age=45 and birth=birth-YEAR(45) where name="陈晓";

——SQL 错误 [1292] [22001]: Data truncation: Incorrect datetime value: '45'

SQL 语句存在多个语法和逻辑错误,导致了Data truncation: Incorrect datetime value: '45'错误。

错误原因拆解:
  1. SET子句使用了错误的ANDUPDATE语句中,多个字段赋值应该用 ** 逗号,** 分隔,而不是ANDANDWHERE子句的逻辑运算符,写在SET里会被解析为逻辑判断,导致语法异常。

  2. birth=birth-YEAR(45)是无效语法YEAR()函数需要传入一个日期 / 时间字段,而不是数字45birth-YEAR(...)这种运算方式也完全错误,无法实现日期的加减。

  3. 数据类型错误由于上述语法错误,MySQL 会错误地尝试将45作为日期时间值解析,因此报出了Incorrect datetime value: '45'错误。


✅ 正确的 SQL 语句

如果你的需求只是修改陈晓的年龄为 45,正确写法如下:

sql

UPDATE ainfo SET age = 45 WHERE name = '陈晓';

📌 进阶场景:同时更新年龄和出生日期

如果你的表中同时有agebirth字段,且需要让两者保持一致(比如设置年龄为 45 岁,自动更新出生日期),可以用以下两种方式实现:

方式 1:直接指定年龄,不更新出生日期

(推荐,除非业务强制要求维护两个冗余字段)

sql

UPDATE ainfo SET age = 45 WHERE name = '陈晓';
方式 2:设置年龄为 45 岁,自动推算出生日期

(假设当前年份为 2026 年,MySQL 环境)

sql

UPDATE ainfo SET age = 45, birth = DATE_SUB(CURDATE(), INTERVAL 45 YEAR) WHERE name = '陈晓';

💡 关键语法说明

  1. UPDATE ... SET多字段赋值多个字段之间必须用 ** 逗号,** 分隔,不能用AND

    sql

    -- 正确 UPDATE table SET col1 = val1, col2 = val2 WHERE ...; -- 错误 UPDATE table SET col1 = val1 AND col2 = val2 WHERE ...;
  2. 日期运算函数

    • CURDATE():获取当前日期(如2026-05-06
    • DATE_SUB(date, INTERVAL N YEAR):从指定日期减去 N 年
    • YEAR(date):获取日期的年份(如YEAR('2026-05-06')返回2026

🛠️ 常见避坑指南

  • 不要在UPDATESET子句中使用AND连接多个字段赋值。
  • agebirth属于冗余字段,业务中建议只维护birth,通过TIMESTAMPDIFF(YEAR, birth, CURDATE())动态计算年龄,避免数据不一致。
  • 字符串类型的name值,需要用单引号'陈晓'包裹,部分数据库也支持双引号,但单引号兼容性更好。
http://www.jsqmd.com/news/766571/

相关文章:

  • day02补充
  • 三指电爪适合哪些异形工件抓取?三指电爪品牌精选推荐 - 品牌2026
  • 5分钟快速上手Plane.dev:从零部署第一个会话后端
  • 利川乡村民宿:口碑驱动的选品与运营策略解析
  • Miku-LuaProfiler安全性与稳定性:如何避免Hook导致的崩溃问题
  • 暗黑破坏神2重制版自动化刷宝终极指南:Botty像素级智能助手全解析
  • 算法题(172):组合型枚举
  • 2026 深圳 GEO 优化服务商综合实力测评 - GEO优化
  • 广州互诚信息科技:十年沉淀的企业级小程序开发服务商 - 奔跑123
  • 音圈线性执行器适用哪些自动化场景?2026年靠谱生产厂商盘点 - 品牌2026
  • 公共安全打架行为识别数据集分享(适用于YOLO系列深度学习检测任务)
  • CodeIgniter4第三方库集成终极指南:轻松整合10+流行PHP库
  • AISMM白皮书深度拆解:5大核心模块、87个评估维度、23个典型误用陷阱——一线架构师手把手带你避坑
  • 为什么92%的MCP 2026告警仍依赖人工响应?揭秘下一代上下文感知告警引擎的4层配置逻辑
  • NV128语音芯片、8002A功放电路、AT24C02电路
  • 浏览器沙箱环境构建:安全执行与结构化回显的实现原理
  • 终极Photoshop纹理压缩指南:Intel Texture Works插件完整使用教程
  • GPT-Engineer高可用部署架构:构建稳定AI开发环境的终极指南
  • 从一次PCIe设备异常掉速说起:深入理解MPS/MRRS寄存器与TLP数据包那点事
  • 工业夹爪定制选型要注意哪些细节?源头生产厂家推荐参考 - 品牌2026
  • SQLCoder终极指南:如何用AI让自然语言秒变SQL查询
  • 如何快速安装和配置QLMarkdown:新手入门教程
  • Verilog表达式位宽:从C语言类型转换的“坑”说起,聊聊硬件描述语言里的那些“潜规则”
  • 2026 杭州 GEO 优化服务商实力盘点:AI 搜索红利下的杭企数字化选型指南 - GEO优化
  • 财务知识-营收vs毛利vs利润 - 智慧园区
  • 算法题(173):枚举排列
  • Bounded Context Canvas终极指南:如何快速设计领域驱动设计中的有界上下文
  • 伺服电爪靠什么实现高精度作业?2026年伺服电爪高口碑品牌怎么选 - 品牌2026
  • 利用快马平台ai能力,十分钟构建智能天气助手应用原型
  • 华东师大家教网:让专业与用心,为孩子成长护航 - 教育信息速递