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

phpMyAdmin执行UPDATE语句报#1292:日期值异常问题求助

问题排查:MySQL更新日期时出现错误#1292

问题描述

  • 操作场景:使用phpMyAdmin更新数据表mantenimiento的值
  • 执行的SQL语句:
UPDATE mantenimiento SET fecha_inicio = 2022-07-13, fecha_final = 2022-07-15, id_usuario = 4, id_equipo=3, descripcion = 'Falla' WHERE id = 2;
  • 报错信息:

#1292 - Incorrect date value: '2002' for column 'fecha_inicio' at row 1

  • 关联PHP预处理代码:
$stmt = $conn->prepare("UPDATE mantenimiento SET fecha_inicio = :fecha_inicio, fecha_final = :fecha_final, id_usuario = :id_usuario, id_equipo=:id_equipo, descripcion = :descripcion WHERE id = :id");
$stmt->bindParam(':fecha_inicio', $this->fecha_inicio);
$stmt->bindParam(':fecha_final', $this->fecha_final);
$stmt->bindParam(':id_usuario', $this->id_usuario);
$stmt->bindParam(':id_equipo', $this->id_equipo);
$stmt->bindParam(':descripcion', $this->descripcion);
$stmt->bindParam(':id', $this->id);

问题原因

MySQL会把未加引号的2022-07-13当成数学运算:2022减去7再减去13,结果正好是2002。而fecha_inicio是日期类型字段,无法接受数值2002,因此触发#1292错误。

解决方法

1. 直接执行SQL时的修正

给日期值加上单引号,让MySQL识别为日期字符串:

UPDATE mantenimiento SET fecha_inicio = '2022-07-13', fecha_final = '2022-07-15', id_usuario = 4, id_equipo=3, descripcion = 'Falla' WHERE id = 2;

2. PHP代码的注意事项

你的PHP预处理代码本身逻辑没问题,但需要确保$this->fecha_inicio和$this->fecha_final是符合MySQL日期格式的字符串(比如2022-07-13),预处理机制会自动处理类型转换。同时要确认这两个变量没有被错误处理成数值类型。

内容的提问来源于stack exchange,提问作者DUILIO JOSE SOTELO MEDRANO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:24:30