如何解决Microsoft SQL Server表插入日期值的转换报错
在Microsoft SQL Server中解决日期插入报错的正确语句
首先是你创建的数据表:
CREATE TABLE HUL ( Company_name varchar(50), Purchase_date date, Quantity int, Price float, Age int, profit_and_loss float )
你遇到的日期插入报错,核心原因是SQL Server无法自动识别你使用的DD-MM-YYYY格式字符串,或是CAST语句存在语法错误。以下是几种可行的正确插入语句:
方法1:使用SQL Server默认支持的YYYY-MM-DD格式
直接使用标准日期格式插入,无需转换:
INSERT INTO HUL (Company_name, Purchase_date, Quantity, Price, Age, profit_and_loss) VALUES ('Hindusthan_Unilever', '2022-03-25', 1, 1950.40, 125, 669.45);
方法2:用CONVERT函数指定格式代码
针对你习惯的DD-MM-YYYY格式,使用CONVERT并指定格式代码103(对应DD/MM/YYYY,连字符分隔也能识别):
INSERT INTO HUL (Company_name, Purchase_date, Quantity, Price, Age, profit_and_loss) VALUES ('Hindusthan_Unilever', CONVERT(DATE, '25-03-2022', 103), 1, 1950.40, 125, 669.45);
方法3:用DATEFROMPARTS函数构造日期
直接传入年、月、日数值,完全避免格式问题:
INSERT INTO HUL (Company_name, Purchase_date, Quantity, Price, Age, profit_and_loss) VALUES ('Hindusthan_Unilever', DATEFROMPARTS(2022, 3, 25), 1, 1950.40, 125, 669.45);
修复你之前的CAST语句
你之前的CAST多了一个逗号,若要处理无分隔符的25032022,可以这样写(需先添加分隔符再转换):
INSERT INTO HUL (Company_name, Purchase_date, Quantity, Price, Age, profit_and_loss) VALUES ('Hindusthan_Unilever', CONVERT(DATE, STUFF(STUFF('25032022',3,0,'-'),6,0,'-'), 105), 1, 1950.40, 125, 669.45);
内容的提问来源于stack exchange,提问作者sailakshmi
相关产品推荐
相关产品推荐

