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

MySQL插入MM/DD/YYYY日期报1292错误 无需改值修复方法

错误原因

MySQL的date类型默认仅识别YYYY-MM-DD格式的标准日期字符串,你插入的9/28/1989属于M/D/YYYY格式的美式日期,无法被默认解析规则识别,因此触发1292报错。

修复方案(无需手动修改日期值为默认格式)

方案1:插入时使用日期转换函数(推荐,无格式歧义)

你不需要手动调整每个日期的书写格式,只需要在INSERT语句中,用STR_TO_DATE()函数包裹原有日期值,指定匹配的格式规则即可自动完成合法日期转换。
针对你使用的月/日/4位年(月份、日期无前置零)的格式,对应的格式化规则为'%c/%e/%Y',修正后的可执行语句如下:

CREATE TABLE Patients (
    Patient_ID integer PRIMARY KEY NOT NULL,
    L_Name varchar (10) NOT NULL,
    F_Name varchar (15) NOT NULL,
    Birthdate date NOT NULL,
    Telephone text (15) NOT NULL,
    Patient_Status Varchar (20) NOT NULL);

-- 已修正原语句的语法错误、主键重复问题
INSERT INTO Patients VALUES ( '2116', 'Muhammed', 'Khalis', STR_TO_DATE('9/28/1989', '%c/%e/%Y'), '+1868-622-8322', 'Outpatient');
INSERT INTO Patients VALUES ( '2117', 'Gueverra', 'Leanna', STR_TO_DATE('1/24/2005', '%c/%e/%Y'), '+1868-321-4128', 'Outpatient');
INSERT INTO Patients VALUES ( '2118', 'Hunte', 'Riley', STR_TO_DATE('3/8/1944', '%c/%e/%Y'), '+1868-293-2782', 'Outpatient');

方案2:临时调整会话SQL模式(适合批量导入场景,不推荐生产环境使用)

如果不想修改每条插入语句,可以在执行插入前,临时关闭当前连接的严格SQL模式,让MySQL自动兼容非标准格式的日期值:

-- 关闭当前会话的严格模式
SET SESSION sql_mode = '';
-- 执行原有INSERT语句(需先修正原语句的语法、主键重复问题)
INSERT INTO Patients VALUES ( '2116', 'Muhammed', 'Khalis', '9/28/1989', '+1868-622-8322', 'Outpatient');
INSERT INTO Patients VALUES ( '2117', 'Gueverra', 'Leanna', '1/24/2005', '+1868-321-4128', 'Outpatient');
INSERT INTO Patients VALUES ( '2118', 'Hunte', 'Riley', '3/8/1944', '+1868-293-2782', 'Outpatient');
-- 插入完成后恢复默认严格模式
SET SESSION sql_mode = DEFAULT;

注意:该方案存在日期解析歧义风险,例如3/8/1944可能因区域设置被误解析为8月3日而非3月8日,数据准确性无法保证。

额外提示:你提供的原始SQL还存在两个会阻断执行的问题:

  • 第三条INSERT语句末尾缺少分号,属于语法错误
  • Patient_ID是主键,不允许重复,原语句重复插入了ID为2117、2118的记录,会触发主键冲突错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:01:14