MySQL INSERT语句语法错误及日期值截断问题求助
问题排查与解决
核心错误分析
- 日期值非法:你的
dob字段值2015-05-145 07:47:09存在两个致命问题:- 日期部分
145是无效日份(月份最大天数为31),直接触发数据截断错误; - 表结构中
dob的类型是DATE,仅存储年月日,不需要携带时分秒信息。
- 日期部分
- 日期未加单引号:SQL中日期/字符串类型的值必须用单引号包裹,原语句未加单引号时,MySQL会将
2015-05-145解析为数学运算(2015-5-145),进而引发语法错误。 - 可选优化:
age字段为int类型,直接传入数字48而非字符串'48',更符合字段类型规范,避免隐式转换风险。
修正后的SQL语句
INSERT INTO users (name, age, comment, dob, email, addres) VALUES ('Jane', 48, 'coOUtqEHqY', '2015-05-14', '5Xi1Jdd5LrgMkU8xMv5@outlook.com', 'Suite 638 58920 Loree Path, Port Georgettechester, IL 06836');
注:将
dob值修正为合法日期2015-05-14,用单引号包裹,同时调整age值为数字类型。
额外建议
- 插入日期时严格遵循
YYYY-MM-DD格式,确保日份不超过对应月份的最大天数; - Java项目中建议使用
PreparedStatement替代直接拼接SQL字符串,既能避免类似语法错误,又能防范SQL注入风险。
内容的提问来源于stack exchange,提问作者creativeAxe
相关产品推荐
相关产品推荐

