DogLicense表date列插入日期时转换失败,请求排查原因
插入DogLicense表失败的原因及解决办法
核心问题分析
- 日期格式非法:你写的日期值
'2023-21-06'是「年-日-月」格式,但SQL Server默认只识别yyyy-MM-dd(年-月-日)的合法日期,21超出了月份1-12的范围,导致日期转换失败,触发Msg 241错误。 - 去掉引号后的类型冲突:去掉引号后,
2023-21-06会被SQL当作算术表达式计算(2023-21-6=1996),得到整数结果,而Expires字段是date类型,整数与日期类型不兼容,触发Msg 206错误。
解决办法
- 修正日期格式为合法的
yyyy-MM-dd,比如把'2023-21-06'改成'2023-06-21'。 - 插入时显式指定字段列表,这是SQL插入的最佳实践,能避免因表结构字段顺序变化导致的匹配错误。
正确的插入语句示例
INSERT INTO DogLicense (Expires, Sex, PetName, Breed, OwnerLastName, OwnerFirstName, Address, Zip, Phone) VALUES ('2023-06-21', 'NM', 'Rosco', 'St. Bernard', 'Freeman', 'Mark', '123 Medow Ln.', '99207', '5095551212');
内容的提问来源于stack exchange,提问作者hudg
相关产品推荐
相关产品推荐

