You need to enable JavaScript to run this app. 使用SELECT结合FROM_UNIXTIME、SUBSTRING更新MySQL日期字段的报错解决
优惠活动
大模型
产品
解决方案
定价
更多

使用SELECT结合FROM_UNIXTIME、SUBSTRING更新MySQL日期字段的报错解决

报错核心原因
  • 触发Error Code: 1242的本质是等号右侧的子查询未与当前更新行做值关联:逐行执行UPDATE时,无绑定关系的子查询会返回整张表的所有转换结果,单字段赋值仅能接收单值,多行返回直接触发报错。
  • 两种报错写法的共性问题:无论是嵌套派生表全表查询、还是无关联条件的裸SELECT,都没有把当前行的CIS_DATE2值作为计算输入,完全不符合逐行更新的赋值逻辑。
零中间字段的正确实现方案

逐行计算逻辑不需要嵌套子查询,直接将转换函数写入SET子句即可,全程不需要额外建字段存储中间结果:

UPDATE METRIC
SET CIS_DATE = FROM_UNIXTIME(SUBSTRING(CIS_DATE2, 1, 10), '%Y-%m-%d')
WHERE CIS_DATE2 IS NOT NULL;
结果校验
  • 针对测试值1154390400000000000,通过SUBSTRING(CIS_DATE2,1,10)截取前10位得到时间戳1154390400,经FROM_UNIXTIME格式化后输出2006-08-01,完全匹配指定的映射规则。
  • 该写法执行时会逐行读取当前记录的CIS_DATE2值完成计算赋值,不存在返回多行结果的子查询逻辑,不会触发1242报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 14:54:01