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

如何在SQL的date字段中插入日期?MySQL插入语句报错求助

解决MySQL INSERT语句中的日期格式错误

嘿,这个问题我太熟悉了!咱们先拆解一下问题出在哪,再给你两种靠谱的解决方案:

问题根源

从你的表结构和错误信息来看,核心问题有两个:

  1. 你的sdate和edate字段是**date类型**,这个类型只存储日期部分,不需要带12:00 AM这类时间信息;
  2. MySQL默认只识别YYYY-MM-DD格式的日期(比如2020-05-28),你用的5/28/2020这种MM/DD/YYYY格式,哪怕加了单引号,MySQL也没法自动解析,所以会抛出1292 (22007)错误。

你的原表结构(方便参考):

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(20) | YES  |     | NULL    |       |
| course | varchar(50) | YES  |     | NULL    |       |
| sdate  | date        | YES  |     | NULL    |       |
| edate  | date        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

解决方案1:直接使用MySQL支持的日期格式

最简单的方式就是把日期改成YYYY-MM-DD格式,同时去掉多余的时间部分,直接插入:

INSERT INTO dummy VALUES('Tanzeel', 'SQL Bootcamp', '2020-05-28', '2020-11-20');
INSERT INTO dummy VALUES('John', 'ReactJS for Beginners', '2020-06-28', '2020-10-20');

解决方案2:用STR_TO_DATE()转换格式(适合无法修改原日期字符串的场景)

如果你的日期字符串是固定的MM/DD/YYYY 12:00 AM格式(比如从外部文件导入),可以用MySQL的STR_TO_DATE()函数把它转换成合法的日期值:

INSERT INTO dummy VALUES(
    'Tanzeel', 
    'SQL Bootcamp', 
    STR_TO_DATE('5/28/2020 12:00 AM', '%m/%d/%Y %h:%i %p'), 
    STR_TO_DATE('11/20/2020 12:00 AM', '%m/%d/%Y %h:%i %p')
);

INSERT INTO dummy VALUES(
    'John', 
    'ReactJS for Beginners', 
    STR_TO_DATE('6/28/2020 12:00 AM', '%m/%d/%Y %h:%i %p'), 
    STR_TO_DATE('10/20/2020 12:00 AM', '%m/%d/%Y %h:%i %p')
);

这里的格式符说明:

  • %m:两位数字的月份(01-12)
  • %d:两位数字的日期(01-31)
  • %Y:四位数字的年份(比如2020)
  • %h:12小时制的小时(01-12)
  • %i:两位数字的分钟(00-59)
  • %p:AM/PM标识

额外提示

如果你的字段是datetime类型(需要存储日期+时间),MySQL的默认格式是YYYY-MM-DD HH:MM:SS,到时候你可以用类似的方法处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:53:13