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

SQL插入数据遇Msg 102语法错误,如何修复日期格式问题?

问题修复方案

错误原因分析

  1. set dateformat语法错误:你写的set dateformat yyyy-mm-dd;不符合SQL Server语法规范,dateformat的参数只能是日期部分的顺序标识(如ymd、mdy、dmy),不能带分隔符的完整格式字符串,这直接导致了语法错误提示Incorrect syntax near '-'。
  2. 无效日期值:第6条数据的shipped_date字段值为'2016-01-53',1月份不存在53号,属于非法日期,即使修复语法错误,插入操作也会失败。

修正后的SQL代码

-- 正确设置日期格式顺序为年-月-日
set dateformat ymd;

insert into orders(order_id, customer_id, order_status, order_date, required_date, shipped_date, store_id, staff_id)
Values
(1, 259, 4, '2016-01-01', '2016-01-03', '2016-01-03', 1, 2),
(2, 1212, 4, '2016-01-01', '2016-01-04', '2016-01-03', 2, 6),
(3, 523, 4, '2016-01-02', '2016-01-05', '2016-01-03', 2, 7),
(4, 175, 4, '2016-01-03', '2016-01-04', '2016-01-05', 1, 3),
(5, 1324, 4, '2016-01-03', '2016-01-06', '2016-01-06', 2, 6),
-- 修正非法日期为合法值(示例改为2016-01-13,可根据实际需求调整)
(6, 94, 4, '2016-01-04', '2016-01-07', '2016-01-13', 2, 6),
(7, 324, 4, '2016-01-04', '2016-01-07', '2016-01-05', 2, 6),
(8, 1204, 4, '2016-01-04', '2016-01-05', '2016-01-05', 2, 7),
(9, 60, 4, '2016-01-05', '2016-01-08', '2016-01-08', 1, 2),
(10, 442, 4, '2016-01-05', '2016-01-06', '2016-01-06', 2, 6),
(11, 1326, 4, '2016-01-05', '2016-01-08', '2016-01-07', 2, 7);

select order_id, customer_id, order_status, order_date, required_date, shipped_date, store_id, staff_id from orders

额外说明

如果你使用的是SQL Server,其实'yyyy-mm-dd'属于ISO标准日期格式,无需手动设置dateformat也能被正确解析,因此也可以直接删除set dateformat语句,只修正非法日期值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:32:08